diff options
Diffstat (limited to 'cpu/netlist_gen.ml')
-rw-r--r-- | cpu/netlist_gen.ml | 2279 |
1 files changed, 1747 insertions, 532 deletions
diff --git a/cpu/netlist_gen.ml b/cpu/netlist_gen.ml index 4eabf25..3e40e0f 100644 --- a/cpu/netlist_gen.ml +++ b/cpu/netlist_gen.ml @@ -2,13 +2,13 @@ open Netlist_ast include Netlist_proc -type t = calc ref +type t = calc let main_0_1 circuit = let eqs = [] in let vars = Idm.empty in let o_1 = circuit in - let arg_1,_,eqs,vars = calc eqs vars o_1 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in match arg_1 with | Avar id_1 -> { p_eqs = eqs; @@ -21,8 +21,8 @@ let main_0_2 circuit = let eqs = [] in let vars = Idm.empty in let o_1,o_2 = circuit in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in match arg_1,arg_2 with | Avar id_1,Avar id_2 -> { p_eqs = eqs; @@ -35,9 +35,9 @@ let main_0_3 circuit = let eqs = [] in let vars = Idm.empty in let o_1,o_2,o_3 = circuit in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in match arg_1,arg_2,arg_3 with | Avar id_1,Avar id_2,Avar id_3 -> { p_eqs = eqs; @@ -50,10 +50,10 @@ let main_0_4 circuit = let eqs = [] in let vars = Idm.empty in let o_1,o_2,o_3,o_4 = circuit in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in match arg_1,arg_2,arg_3,arg_4 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4 -> { p_eqs = eqs; @@ -66,11 +66,11 @@ let main_0_5 circuit = let eqs = [] in let vars = Idm.empty in let o_1,o_2,o_3,o_4,o_5 = circuit in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in match arg_1,arg_2,arg_3,arg_4,arg_5 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5 -> { p_eqs = eqs; @@ -83,12 +83,12 @@ let main_0_6 circuit = let eqs = [] in let vars = Idm.empty in let o_1,o_2,o_3,o_4,o_5,o_6 = circuit in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6 -> { p_eqs = eqs; @@ -101,13 +101,13 @@ let main_0_7 circuit = let eqs = [] in let vars = Idm.empty in let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7 -> { p_eqs = eqs; @@ -120,14 +120,14 @@ let main_0_8 circuit = let eqs = [] in let vars = Idm.empty in let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8 -> { p_eqs = eqs; @@ -140,15 +140,15 @@ let main_0_9 circuit = let eqs = [] in let vars = Idm.empty in let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in - let arg_9,_,eqs,vars = calc eqs vars o_9 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in + let arg_9,_,eqs,vars = calc Iset.empty eqs vars o_9 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8,arg_9 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8,Avar id_9 -> { p_eqs = eqs; @@ -161,8 +161,11 @@ let main_1_1 circuit t_1 = let i_1 = id "" in let eqs = [] in let vars = Idm.add i_1 t_1 (Idm.empty) in - let o_1 = circuit (ref (Id (i_1,t_1))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let o_1 = circuit val_1 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in match arg_1 with | Avar id_1 -> { p_eqs = eqs; @@ -175,9 +178,12 @@ let main_1_2 circuit t_1 = let i_1 = id "" in let eqs = [] in let vars = Idm.add i_1 t_1 (Idm.empty) in - let o_1,o_2 = circuit (ref (Id (i_1,t_1))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let o_1,o_2 = circuit val_1 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in match arg_1,arg_2 with | Avar id_1,Avar id_2 -> { p_eqs = eqs; @@ -190,10 +196,13 @@ let main_1_3 circuit t_1 = let i_1 = id "" in let eqs = [] in let vars = Idm.add i_1 t_1 (Idm.empty) in - let o_1,o_2,o_3 = circuit (ref (Id (i_1,t_1))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let o_1,o_2,o_3 = circuit val_1 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in match arg_1,arg_2,arg_3 with | Avar id_1,Avar id_2,Avar id_3 -> { p_eqs = eqs; @@ -206,11 +215,14 @@ let main_1_4 circuit t_1 = let i_1 = id "" in let eqs = [] in let vars = Idm.add i_1 t_1 (Idm.empty) in - let o_1,o_2,o_3,o_4 = circuit (ref (Id (i_1,t_1))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let o_1,o_2,o_3,o_4 = circuit val_1 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in match arg_1,arg_2,arg_3,arg_4 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4 -> { p_eqs = eqs; @@ -223,12 +235,15 @@ let main_1_5 circuit t_1 = let i_1 = id "" in let eqs = [] in let vars = Idm.add i_1 t_1 (Idm.empty) in - let o_1,o_2,o_3,o_4,o_5 = circuit (ref (Id (i_1,t_1))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let o_1,o_2,o_3,o_4,o_5 = circuit val_1 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in match arg_1,arg_2,arg_3,arg_4,arg_5 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5 -> { p_eqs = eqs; @@ -241,13 +256,16 @@ let main_1_6 circuit t_1 = let i_1 = id "" in let eqs = [] in let vars = Idm.add i_1 t_1 (Idm.empty) in - let o_1,o_2,o_3,o_4,o_5,o_6 = circuit (ref (Id (i_1,t_1))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let o_1,o_2,o_3,o_4,o_5,o_6 = circuit val_1 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6 -> { p_eqs = eqs; @@ -260,14 +278,17 @@ let main_1_7 circuit t_1 = let i_1 = id "" in let eqs = [] in let vars = Idm.add i_1 t_1 (Idm.empty) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit (ref (Id (i_1,t_1))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit val_1 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7 -> { p_eqs = eqs; @@ -280,15 +301,18 @@ let main_1_8 circuit t_1 = let i_1 = id "" in let eqs = [] in let vars = Idm.add i_1 t_1 (Idm.empty) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit (ref (Id (i_1,t_1))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit val_1 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8 -> { p_eqs = eqs; @@ -301,16 +325,19 @@ let main_1_9 circuit t_1 = let i_1 = id "" in let eqs = [] in let vars = Idm.add i_1 t_1 (Idm.empty) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit (ref (Id (i_1,t_1))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in - let arg_9,_,eqs,vars = calc eqs vars o_9 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit val_1 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in + let arg_9,_,eqs,vars = calc Iset.empty eqs vars o_9 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8,arg_9 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8,Avar id_9 -> { p_eqs = eqs; @@ -324,8 +351,14 @@ let main_2_1 circuit t_1 t_2 = let i_2 = id "" in let eqs = [] in let vars = Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)) in - let o_1 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let o_1 = circuit val_1 val_2 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in match arg_1 with | Avar id_1 -> { p_eqs = eqs; @@ -339,9 +372,15 @@ let main_2_2 circuit t_1 t_2 = let i_2 = id "" in let eqs = [] in let vars = Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)) in - let o_1,o_2 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let o_1,o_2 = circuit val_1 val_2 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in match arg_1,arg_2 with | Avar id_1,Avar id_2 -> { p_eqs = eqs; @@ -355,10 +394,16 @@ let main_2_3 circuit t_1 t_2 = let i_2 = id "" in let eqs = [] in let vars = Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)) in - let o_1,o_2,o_3 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let o_1,o_2,o_3 = circuit val_1 val_2 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in match arg_1,arg_2,arg_3 with | Avar id_1,Avar id_2,Avar id_3 -> { p_eqs = eqs; @@ -372,11 +417,17 @@ let main_2_4 circuit t_1 t_2 = let i_2 = id "" in let eqs = [] in let vars = Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)) in - let o_1,o_2,o_3,o_4 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let o_1,o_2,o_3,o_4 = circuit val_1 val_2 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in match arg_1,arg_2,arg_3,arg_4 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4 -> { p_eqs = eqs; @@ -390,12 +441,18 @@ let main_2_5 circuit t_1 t_2 = let i_2 = id "" in let eqs = [] in let vars = Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)) in - let o_1,o_2,o_3,o_4,o_5 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let o_1,o_2,o_3,o_4,o_5 = circuit val_1 val_2 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in match arg_1,arg_2,arg_3,arg_4,arg_5 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5 -> { p_eqs = eqs; @@ -409,13 +466,19 @@ let main_2_6 circuit t_1 t_2 = let i_2 = id "" in let eqs = [] in let vars = Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)) in - let o_1,o_2,o_3,o_4,o_5,o_6 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let o_1,o_2,o_3,o_4,o_5,o_6 = circuit val_1 val_2 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6 -> { p_eqs = eqs; @@ -429,14 +492,20 @@ let main_2_7 circuit t_1 t_2 = let i_2 = id "" in let eqs = [] in let vars = Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit val_1 val_2 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7 -> { p_eqs = eqs; @@ -450,15 +519,21 @@ let main_2_8 circuit t_1 t_2 = let i_2 = id "" in let eqs = [] in let vars = Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit val_1 val_2 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8 -> { p_eqs = eqs; @@ -472,16 +547,22 @@ let main_2_9 circuit t_1 t_2 = let i_2 = id "" in let eqs = [] in let vars = Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in - let arg_9,_,eqs,vars = calc eqs vars o_9 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit val_1 val_2 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in + let arg_9,_,eqs,vars = calc Iset.empty eqs vars o_9 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8,arg_9 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8,Avar id_9 -> { p_eqs = eqs; @@ -496,8 +577,17 @@ let main_3_1 circuit t_1 t_2 t_3 = let i_3 = id "" in let eqs = [] in let vars = Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))) in - let o_1 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let o_1 = circuit val_1 val_2 val_3 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in match arg_1 with | Avar id_1 -> { p_eqs = eqs; @@ -512,9 +602,18 @@ let main_3_2 circuit t_1 t_2 t_3 = let i_3 = id "" in let eqs = [] in let vars = Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))) in - let o_1,o_2 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let o_1,o_2 = circuit val_1 val_2 val_3 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in match arg_1,arg_2 with | Avar id_1,Avar id_2 -> { p_eqs = eqs; @@ -529,10 +628,19 @@ let main_3_3 circuit t_1 t_2 t_3 = let i_3 = id "" in let eqs = [] in let vars = Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))) in - let o_1,o_2,o_3 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let o_1,o_2,o_3 = circuit val_1 val_2 val_3 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in match arg_1,arg_2,arg_3 with | Avar id_1,Avar id_2,Avar id_3 -> { p_eqs = eqs; @@ -547,11 +655,20 @@ let main_3_4 circuit t_1 t_2 t_3 = let i_3 = id "" in let eqs = [] in let vars = Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))) in - let o_1,o_2,o_3,o_4 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let o_1,o_2,o_3,o_4 = circuit val_1 val_2 val_3 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in match arg_1,arg_2,arg_3,arg_4 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4 -> { p_eqs = eqs; @@ -566,12 +683,21 @@ let main_3_5 circuit t_1 t_2 t_3 = let i_3 = id "" in let eqs = [] in let vars = Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))) in - let o_1,o_2,o_3,o_4,o_5 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let o_1,o_2,o_3,o_4,o_5 = circuit val_1 val_2 val_3 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in match arg_1,arg_2,arg_3,arg_4,arg_5 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5 -> { p_eqs = eqs; @@ -586,13 +712,22 @@ let main_3_6 circuit t_1 t_2 t_3 = let i_3 = id "" in let eqs = [] in let vars = Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))) in - let o_1,o_2,o_3,o_4,o_5,o_6 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let o_1,o_2,o_3,o_4,o_5,o_6 = circuit val_1 val_2 val_3 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6 -> { p_eqs = eqs; @@ -607,14 +742,23 @@ let main_3_7 circuit t_1 t_2 t_3 = let i_3 = id "" in let eqs = [] in let vars = Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit val_1 val_2 val_3 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7 -> { p_eqs = eqs; @@ -629,15 +773,24 @@ let main_3_8 circuit t_1 t_2 t_3 = let i_3 = id "" in let eqs = [] in let vars = Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit val_1 val_2 val_3 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8 -> { p_eqs = eqs; @@ -652,16 +805,25 @@ let main_3_9 circuit t_1 t_2 t_3 = let i_3 = id "" in let eqs = [] in let vars = Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in - let arg_9,_,eqs,vars = calc eqs vars o_9 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit val_1 val_2 val_3 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in + let arg_9,_,eqs,vars = calc Iset.empty eqs vars o_9 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8,arg_9 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8,Avar id_9 -> { p_eqs = eqs; @@ -677,8 +839,20 @@ let main_4_1 circuit t_1 t_2 t_3 t_4 = let i_4 = id "" in let eqs = [] in let vars = Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))) in - let o_1 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let o_1 = circuit val_1 val_2 val_3 val_4 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in match arg_1 with | Avar id_1 -> { p_eqs = eqs; @@ -694,9 +868,21 @@ let main_4_2 circuit t_1 t_2 t_3 t_4 = let i_4 = id "" in let eqs = [] in let vars = Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))) in - let o_1,o_2 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let o_1,o_2 = circuit val_1 val_2 val_3 val_4 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in match arg_1,arg_2 with | Avar id_1,Avar id_2 -> { p_eqs = eqs; @@ -712,10 +898,22 @@ let main_4_3 circuit t_1 t_2 t_3 t_4 = let i_4 = id "" in let eqs = [] in let vars = Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))) in - let o_1,o_2,o_3 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let o_1,o_2,o_3 = circuit val_1 val_2 val_3 val_4 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in match arg_1,arg_2,arg_3 with | Avar id_1,Avar id_2,Avar id_3 -> { p_eqs = eqs; @@ -731,11 +929,23 @@ let main_4_4 circuit t_1 t_2 t_3 t_4 = let i_4 = id "" in let eqs = [] in let vars = Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))) in - let o_1,o_2,o_3,o_4 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let o_1,o_2,o_3,o_4 = circuit val_1 val_2 val_3 val_4 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in match arg_1,arg_2,arg_3,arg_4 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4 -> { p_eqs = eqs; @@ -751,12 +961,24 @@ let main_4_5 circuit t_1 t_2 t_3 t_4 = let i_4 = id "" in let eqs = [] in let vars = Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))) in - let o_1,o_2,o_3,o_4,o_5 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let o_1,o_2,o_3,o_4,o_5 = circuit val_1 val_2 val_3 val_4 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in match arg_1,arg_2,arg_3,arg_4,arg_5 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5 -> { p_eqs = eqs; @@ -772,13 +994,25 @@ let main_4_6 circuit t_1 t_2 t_3 t_4 = let i_4 = id "" in let eqs = [] in let vars = Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))) in - let o_1,o_2,o_3,o_4,o_5,o_6 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let o_1,o_2,o_3,o_4,o_5,o_6 = circuit val_1 val_2 val_3 val_4 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6 -> { p_eqs = eqs; @@ -794,14 +1028,26 @@ let main_4_7 circuit t_1 t_2 t_3 t_4 = let i_4 = id "" in let eqs = [] in let vars = Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit val_1 val_2 val_3 val_4 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7 -> { p_eqs = eqs; @@ -817,15 +1063,27 @@ let main_4_8 circuit t_1 t_2 t_3 t_4 = let i_4 = id "" in let eqs = [] in let vars = Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit val_1 val_2 val_3 val_4 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8 -> { p_eqs = eqs; @@ -841,16 +1099,28 @@ let main_4_9 circuit t_1 t_2 t_3 t_4 = let i_4 = id "" in let eqs = [] in let vars = Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in - let arg_9,_,eqs,vars = calc eqs vars o_9 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit val_1 val_2 val_3 val_4 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in + let arg_9,_,eqs,vars = calc Iset.empty eqs vars o_9 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8,arg_9 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8,Avar id_9 -> { p_eqs = eqs; @@ -867,8 +1137,23 @@ let main_5_1 circuit t_1 t_2 t_3 t_4 t_5 = let i_5 = id "" in let eqs = [] in let vars = Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))) in - let o_1 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let o_1 = circuit val_1 val_2 val_3 val_4 val_5 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in match arg_1 with | Avar id_1 -> { p_eqs = eqs; @@ -885,9 +1170,24 @@ let main_5_2 circuit t_1 t_2 t_3 t_4 t_5 = let i_5 = id "" in let eqs = [] in let vars = Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))) in - let o_1,o_2 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let o_1,o_2 = circuit val_1 val_2 val_3 val_4 val_5 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in match arg_1,arg_2 with | Avar id_1,Avar id_2 -> { p_eqs = eqs; @@ -904,10 +1204,25 @@ let main_5_3 circuit t_1 t_2 t_3 t_4 t_5 = let i_5 = id "" in let eqs = [] in let vars = Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))) in - let o_1,o_2,o_3 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let o_1,o_2,o_3 = circuit val_1 val_2 val_3 val_4 val_5 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in match arg_1,arg_2,arg_3 with | Avar id_1,Avar id_2,Avar id_3 -> { p_eqs = eqs; @@ -924,11 +1239,26 @@ let main_5_4 circuit t_1 t_2 t_3 t_4 t_5 = let i_5 = id "" in let eqs = [] in let vars = Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))) in - let o_1,o_2,o_3,o_4 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let o_1,o_2,o_3,o_4 = circuit val_1 val_2 val_3 val_4 val_5 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in match arg_1,arg_2,arg_3,arg_4 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4 -> { p_eqs = eqs; @@ -945,12 +1275,27 @@ let main_5_5 circuit t_1 t_2 t_3 t_4 t_5 = let i_5 = id "" in let eqs = [] in let vars = Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))) in - let o_1,o_2,o_3,o_4,o_5 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let o_1,o_2,o_3,o_4,o_5 = circuit val_1 val_2 val_3 val_4 val_5 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in match arg_1,arg_2,arg_3,arg_4,arg_5 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5 -> { p_eqs = eqs; @@ -967,13 +1312,28 @@ let main_5_6 circuit t_1 t_2 t_3 t_4 t_5 = let i_5 = id "" in let eqs = [] in let vars = Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))) in - let o_1,o_2,o_3,o_4,o_5,o_6 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let o_1,o_2,o_3,o_4,o_5,o_6 = circuit val_1 val_2 val_3 val_4 val_5 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6 -> { p_eqs = eqs; @@ -990,14 +1350,29 @@ let main_5_7 circuit t_1 t_2 t_3 t_4 t_5 = let i_5 = id "" in let eqs = [] in let vars = Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit val_1 val_2 val_3 val_4 val_5 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7 -> { p_eqs = eqs; @@ -1014,15 +1389,30 @@ let main_5_8 circuit t_1 t_2 t_3 t_4 t_5 = let i_5 = id "" in let eqs = [] in let vars = Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit val_1 val_2 val_3 val_4 val_5 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8 -> { p_eqs = eqs; @@ -1039,16 +1429,31 @@ let main_5_9 circuit t_1 t_2 t_3 t_4 t_5 = let i_5 = id "" in let eqs = [] in let vars = Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in - let arg_9,_,eqs,vars = calc eqs vars o_9 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit val_1 val_2 val_3 val_4 val_5 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in + let arg_9,_,eqs,vars = calc Iset.empty eqs vars o_9 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8,arg_9 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8,Avar id_9 -> { p_eqs = eqs; @@ -1066,8 +1471,26 @@ let main_6_1 circuit t_1 t_2 t_3 t_4 t_5 t_6 = let i_6 = id "" in let eqs = [] in let vars = Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))) in - let o_1 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let o_1 = circuit val_1 val_2 val_3 val_4 val_5 val_6 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in match arg_1 with | Avar id_1 -> { p_eqs = eqs; @@ -1085,9 +1508,27 @@ let main_6_2 circuit t_1 t_2 t_3 t_4 t_5 t_6 = let i_6 = id "" in let eqs = [] in let vars = Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))) in - let o_1,o_2 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let o_1,o_2 = circuit val_1 val_2 val_3 val_4 val_5 val_6 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in match arg_1,arg_2 with | Avar id_1,Avar id_2 -> { p_eqs = eqs; @@ -1105,10 +1546,28 @@ let main_6_3 circuit t_1 t_2 t_3 t_4 t_5 t_6 = let i_6 = id "" in let eqs = [] in let vars = Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))) in - let o_1,o_2,o_3 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let o_1,o_2,o_3 = circuit val_1 val_2 val_3 val_4 val_5 val_6 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in match arg_1,arg_2,arg_3 with | Avar id_1,Avar id_2,Avar id_3 -> { p_eqs = eqs; @@ -1126,11 +1585,29 @@ let main_6_4 circuit t_1 t_2 t_3 t_4 t_5 t_6 = let i_6 = id "" in let eqs = [] in let vars = Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))) in - let o_1,o_2,o_3,o_4 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let o_1,o_2,o_3,o_4 = circuit val_1 val_2 val_3 val_4 val_5 val_6 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in match arg_1,arg_2,arg_3,arg_4 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4 -> { p_eqs = eqs; @@ -1148,12 +1625,30 @@ let main_6_5 circuit t_1 t_2 t_3 t_4 t_5 t_6 = let i_6 = id "" in let eqs = [] in let vars = Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))) in - let o_1,o_2,o_3,o_4,o_5 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let o_1,o_2,o_3,o_4,o_5 = circuit val_1 val_2 val_3 val_4 val_5 val_6 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in match arg_1,arg_2,arg_3,arg_4,arg_5 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5 -> { p_eqs = eqs; @@ -1171,13 +1666,31 @@ let main_6_6 circuit t_1 t_2 t_3 t_4 t_5 t_6 = let i_6 = id "" in let eqs = [] in let vars = Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))) in - let o_1,o_2,o_3,o_4,o_5,o_6 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let o_1,o_2,o_3,o_4,o_5,o_6 = circuit val_1 val_2 val_3 val_4 val_5 val_6 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6 -> { p_eqs = eqs; @@ -1195,14 +1708,32 @@ let main_6_7 circuit t_1 t_2 t_3 t_4 t_5 t_6 = let i_6 = id "" in let eqs = [] in let vars = Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit val_1 val_2 val_3 val_4 val_5 val_6 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7 -> { p_eqs = eqs; @@ -1220,15 +1751,33 @@ let main_6_8 circuit t_1 t_2 t_3 t_4 t_5 t_6 = let i_6 = id "" in let eqs = [] in let vars = Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit val_1 val_2 val_3 val_4 val_5 val_6 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8 -> { p_eqs = eqs; @@ -1246,16 +1795,34 @@ let main_6_9 circuit t_1 t_2 t_3 t_4 t_5 t_6 = let i_6 = id "" in let eqs = [] in let vars = Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in - let arg_9,_,eqs,vars = calc eqs vars o_9 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit val_1 val_2 val_3 val_4 val_5 val_6 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in + let arg_9,_,eqs,vars = calc Iset.empty eqs vars o_9 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8,arg_9 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8,Avar id_9 -> { p_eqs = eqs; @@ -1274,8 +1841,29 @@ let main_7_1 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 = let i_7 = id "" in let eqs = [] in let vars = Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))) in - let o_1 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let o_1 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in match arg_1 with | Avar id_1 -> { p_eqs = eqs; @@ -1294,9 +1882,30 @@ let main_7_2 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 = let i_7 = id "" in let eqs = [] in let vars = Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))) in - let o_1,o_2 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let o_1,o_2 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in match arg_1,arg_2 with | Avar id_1,Avar id_2 -> { p_eqs = eqs; @@ -1315,10 +1924,31 @@ let main_7_3 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 = let i_7 = id "" in let eqs = [] in let vars = Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))) in - let o_1,o_2,o_3 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let o_1,o_2,o_3 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in match arg_1,arg_2,arg_3 with | Avar id_1,Avar id_2,Avar id_3 -> { p_eqs = eqs; @@ -1337,11 +1967,32 @@ let main_7_4 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 = let i_7 = id "" in let eqs = [] in let vars = Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))) in - let o_1,o_2,o_3,o_4 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let o_1,o_2,o_3,o_4 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in match arg_1,arg_2,arg_3,arg_4 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4 -> { p_eqs = eqs; @@ -1360,12 +2011,33 @@ let main_7_5 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 = let i_7 = id "" in let eqs = [] in let vars = Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))) in - let o_1,o_2,o_3,o_4,o_5 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let o_1,o_2,o_3,o_4,o_5 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in match arg_1,arg_2,arg_3,arg_4,arg_5 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5 -> { p_eqs = eqs; @@ -1384,13 +2056,34 @@ let main_7_6 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 = let i_7 = id "" in let eqs = [] in let vars = Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))) in - let o_1,o_2,o_3,o_4,o_5,o_6 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let o_1,o_2,o_3,o_4,o_5,o_6 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6 -> { p_eqs = eqs; @@ -1409,14 +2102,35 @@ let main_7_7 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 = let i_7 = id "" in let eqs = [] in let vars = Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7 -> { p_eqs = eqs; @@ -1435,15 +2149,36 @@ let main_7_8 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 = let i_7 = id "" in let eqs = [] in let vars = Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8 -> { p_eqs = eqs; @@ -1462,16 +2197,37 @@ let main_7_9 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 = let i_7 = id "" in let eqs = [] in let vars = Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in - let arg_9,_,eqs,vars = calc eqs vars o_9 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in + let arg_9,_,eqs,vars = calc Iset.empty eqs vars o_9 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8,arg_9 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8,Avar id_9 -> { p_eqs = eqs; @@ -1491,8 +2247,32 @@ let main_8_1 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 = let i_8 = id "" in let eqs = [] in let vars = Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))))) in - let o_1 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let o_1 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in match arg_1 with | Avar id_1 -> { p_eqs = eqs; @@ -1512,9 +2292,33 @@ let main_8_2 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 = let i_8 = id "" in let eqs = [] in let vars = Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))))) in - let o_1,o_2 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let o_1,o_2 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in match arg_1,arg_2 with | Avar id_1,Avar id_2 -> { p_eqs = eqs; @@ -1534,10 +2338,34 @@ let main_8_3 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 = let i_8 = id "" in let eqs = [] in let vars = Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))))) in - let o_1,o_2,o_3 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let o_1,o_2,o_3 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in match arg_1,arg_2,arg_3 with | Avar id_1,Avar id_2,Avar id_3 -> { p_eqs = eqs; @@ -1557,11 +2385,35 @@ let main_8_4 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 = let i_8 = id "" in let eqs = [] in let vars = Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))))) in - let o_1,o_2,o_3,o_4 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let o_1,o_2,o_3,o_4 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in match arg_1,arg_2,arg_3,arg_4 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4 -> { p_eqs = eqs; @@ -1581,12 +2433,36 @@ let main_8_5 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 = let i_8 = id "" in let eqs = [] in let vars = Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))))) in - let o_1,o_2,o_3,o_4,o_5 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let o_1,o_2,o_3,o_4,o_5 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in match arg_1,arg_2,arg_3,arg_4,arg_5 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5 -> { p_eqs = eqs; @@ -1606,13 +2482,37 @@ let main_8_6 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 = let i_8 = id "" in let eqs = [] in let vars = Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))))) in - let o_1,o_2,o_3,o_4,o_5,o_6 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let o_1,o_2,o_3,o_4,o_5,o_6 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6 -> { p_eqs = eqs; @@ -1632,14 +2532,38 @@ let main_8_7 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 = let i_8 = id "" in let eqs = [] in let vars = Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7 -> { p_eqs = eqs; @@ -1659,15 +2583,39 @@ let main_8_8 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 = let i_8 = id "" in let eqs = [] in let vars = Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8 -> { p_eqs = eqs; @@ -1687,16 +2635,40 @@ let main_8_9 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 = let i_8 = id "" in let eqs = [] in let vars = Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty)))))))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in - let arg_9,_,eqs,vars = calc eqs vars o_9 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in + let arg_9,_,eqs,vars = calc Iset.empty eqs vars o_9 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8,arg_9 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8,Avar id_9 -> { p_eqs = eqs; @@ -1717,8 +2689,35 @@ let main_9_1 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 t_9 = let i_9 = id "" in let eqs = [] in let vars = Idm.add i_9 t_9 (Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))))) in - let o_1 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) (ref (Id (i_9,t_9))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let val_9 = + let res_9 = ref (Arg (Avar i_9,t_9)) in + fun () -> res_9 in + let o_1 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 val_9 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in match arg_1 with | Avar id_1 -> { p_eqs = eqs; @@ -1739,9 +2738,36 @@ let main_9_2 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 t_9 = let i_9 = id "" in let eqs = [] in let vars = Idm.add i_9 t_9 (Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))))) in - let o_1,o_2 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) (ref (Id (i_9,t_9))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let val_9 = + let res_9 = ref (Arg (Avar i_9,t_9)) in + fun () -> res_9 in + let o_1,o_2 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 val_9 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in match arg_1,arg_2 with | Avar id_1,Avar id_2 -> { p_eqs = eqs; @@ -1762,10 +2788,37 @@ let main_9_3 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 t_9 = let i_9 = id "" in let eqs = [] in let vars = Idm.add i_9 t_9 (Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))))) in - let o_1,o_2,o_3 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) (ref (Id (i_9,t_9))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let val_9 = + let res_9 = ref (Arg (Avar i_9,t_9)) in + fun () -> res_9 in + let o_1,o_2,o_3 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 val_9 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in match arg_1,arg_2,arg_3 with | Avar id_1,Avar id_2,Avar id_3 -> { p_eqs = eqs; @@ -1786,11 +2839,38 @@ let main_9_4 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 t_9 = let i_9 = id "" in let eqs = [] in let vars = Idm.add i_9 t_9 (Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))))) in - let o_1,o_2,o_3,o_4 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) (ref (Id (i_9,t_9))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let val_9 = + let res_9 = ref (Arg (Avar i_9,t_9)) in + fun () -> res_9 in + let o_1,o_2,o_3,o_4 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 val_9 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in match arg_1,arg_2,arg_3,arg_4 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4 -> { p_eqs = eqs; @@ -1811,12 +2891,39 @@ let main_9_5 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 t_9 = let i_9 = id "" in let eqs = [] in let vars = Idm.add i_9 t_9 (Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))))) in - let o_1,o_2,o_3,o_4,o_5 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) (ref (Id (i_9,t_9))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let val_9 = + let res_9 = ref (Arg (Avar i_9,t_9)) in + fun () -> res_9 in + let o_1,o_2,o_3,o_4,o_5 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 val_9 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in match arg_1,arg_2,arg_3,arg_4,arg_5 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5 -> { p_eqs = eqs; @@ -1837,13 +2944,40 @@ let main_9_6 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 t_9 = let i_9 = id "" in let eqs = [] in let vars = Idm.add i_9 t_9 (Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))))) in - let o_1,o_2,o_3,o_4,o_5,o_6 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) (ref (Id (i_9,t_9))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let val_9 = + let res_9 = ref (Arg (Avar i_9,t_9)) in + fun () -> res_9 in + let o_1,o_2,o_3,o_4,o_5,o_6 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 val_9 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6 -> { p_eqs = eqs; @@ -1864,14 +2998,41 @@ let main_9_7 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 t_9 = let i_9 = id "" in let eqs = [] in let vars = Idm.add i_9 t_9 (Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) (ref (Id (i_9,t_9))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let val_9 = + let res_9 = ref (Arg (Avar i_9,t_9)) in + fun () -> res_9 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 val_9 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7 -> { p_eqs = eqs; @@ -1892,15 +3053,42 @@ let main_9_8 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 t_9 = let i_9 = id "" in let eqs = [] in let vars = Idm.add i_9 t_9 (Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) (ref (Id (i_9,t_9))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let val_9 = + let res_9 = ref (Arg (Avar i_9,t_9)) in + fun () -> res_9 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 val_9 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8 -> { p_eqs = eqs; @@ -1921,16 +3109,43 @@ let main_9_9 circuit t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 t_9 = let i_9 = id "" in let eqs = [] in let vars = Idm.add i_9 t_9 (Idm.add i_8 t_8 (Idm.add i_7 t_7 (Idm.add i_6 t_6 (Idm.add i_5 t_5 (Idm.add i_4 t_4 (Idm.add i_3 t_3 (Idm.add i_2 t_2 (Idm.add i_1 t_1 (Idm.empty))))))))) in - let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit (ref (Id (i_1,t_1))) (ref (Id (i_2,t_2))) (ref (Id (i_3,t_3))) (ref (Id (i_4,t_4))) (ref (Id (i_5,t_5))) (ref (Id (i_6,t_6))) (ref (Id (i_7,t_7))) (ref (Id (i_8,t_8))) (ref (Id (i_9,t_9))) in - let arg_1,_,eqs,vars = calc eqs vars o_1 in - let arg_2,_,eqs,vars = calc eqs vars o_2 in - let arg_3,_,eqs,vars = calc eqs vars o_3 in - let arg_4,_,eqs,vars = calc eqs vars o_4 in - let arg_5,_,eqs,vars = calc eqs vars o_5 in - let arg_6,_,eqs,vars = calc eqs vars o_6 in - let arg_7,_,eqs,vars = calc eqs vars o_7 in - let arg_8,_,eqs,vars = calc eqs vars o_8 in - let arg_9,_,eqs,vars = calc eqs vars o_9 in + let val_1 = + let res_1 = ref (Arg (Avar i_1,t_1)) in + fun () -> res_1 in + let val_2 = + let res_2 = ref (Arg (Avar i_2,t_2)) in + fun () -> res_2 in + let val_3 = + let res_3 = ref (Arg (Avar i_3,t_3)) in + fun () -> res_3 in + let val_4 = + let res_4 = ref (Arg (Avar i_4,t_4)) in + fun () -> res_4 in + let val_5 = + let res_5 = ref (Arg (Avar i_5,t_5)) in + fun () -> res_5 in + let val_6 = + let res_6 = ref (Arg (Avar i_6,t_6)) in + fun () -> res_6 in + let val_7 = + let res_7 = ref (Arg (Avar i_7,t_7)) in + fun () -> res_7 in + let val_8 = + let res_8 = ref (Arg (Avar i_8,t_8)) in + fun () -> res_8 in + let val_9 = + let res_9 = ref (Arg (Avar i_9,t_9)) in + fun () -> res_9 in + let o_1,o_2,o_3,o_4,o_5,o_6,o_7,o_8,o_9 = circuit val_1 val_2 val_3 val_4 val_5 val_6 val_7 val_8 val_9 in + let arg_1,_,eqs,vars = calc Iset.empty eqs vars o_1 in + let arg_2,_,eqs,vars = calc Iset.empty eqs vars o_2 in + let arg_3,_,eqs,vars = calc Iset.empty eqs vars o_3 in + let arg_4,_,eqs,vars = calc Iset.empty eqs vars o_4 in + let arg_5,_,eqs,vars = calc Iset.empty eqs vars o_5 in + let arg_6,_,eqs,vars = calc Iset.empty eqs vars o_6 in + let arg_7,_,eqs,vars = calc Iset.empty eqs vars o_7 in + let arg_8,_,eqs,vars = calc Iset.empty eqs vars o_8 in + let arg_9,_,eqs,vars = calc Iset.empty eqs vars o_9 in match arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7,arg_8,arg_9 with | Avar id_1,Avar id_2,Avar id_3,Avar id_4,Avar id_5,Avar id_6,Avar id_7,Avar id_8,Avar id_9 -> { p_eqs = eqs; |