diff options
Diffstat (limited to 'src/Specific/Framework/ArithmeticSynthesis/DefaultsPackage.v')
-rw-r--r-- | src/Specific/Framework/ArithmeticSynthesis/DefaultsPackage.v | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/src/Specific/Framework/ArithmeticSynthesis/DefaultsPackage.v b/src/Specific/Framework/ArithmeticSynthesis/DefaultsPackage.v new file mode 100644 index 000000000..a83adb29c --- /dev/null +++ b/src/Specific/Framework/ArithmeticSynthesis/DefaultsPackage.v @@ -0,0 +1,177 @@ +(* This file is autogenerated from Defaults.v by remake_packages.py *) +Require Import Crypto.Specific.Framework.CurveParametersPackage. +Require Import Crypto.Specific.Framework.ArithmeticSynthesis.BasePackage. +Require Export Crypto.Specific.Framework.ArithmeticSynthesis.Defaults. +Require Import Crypto.Specific.Framework.Packages. +Require Import Crypto.Util.TagList. + +Module TAG. + Inductive tags := carry_sig | zero_sig | one_sig | a24_sig | add_sig | sub_sig | opp_sig | mul_sig | square_sig | ring. +End TAG. + +Ltac add_carry_sig pkg := + Tag.update_by_tac_if_not_exists + pkg + TAG.carry_sig + ltac:(fun _ => let sz := Tag.get pkg TAG.sz in + let m := Tag.get pkg TAG.m in + let wt := Tag.get pkg TAG.wt in + let s := Tag.get pkg TAG.s in + let c := Tag.get pkg TAG.c in + let carry_chains := Tag.get pkg TAG.carry_chains in + let wt_nonzero := Tag.get pkg TAG.wt_nonzero in + let wt_divides_chains := Tag.get pkg TAG.wt_divides_chains in + let carry_sig := fresh "carry_sig" in + let carry_sig := pose_carry_sig sz m wt s c carry_chains wt_nonzero wt_divides_chains carry_sig in + constr:(carry_sig)). +Ltac add_zero_sig pkg := + Tag.update_by_tac_if_not_exists + pkg + TAG.zero_sig + ltac:(fun _ => let sz := Tag.get pkg TAG.sz in + let m := Tag.get pkg TAG.m in + let wt := Tag.get pkg TAG.wt in + let zero_sig := fresh "zero_sig" in + let zero_sig := pose_zero_sig sz m wt zero_sig in + constr:(zero_sig)). +Ltac add_one_sig pkg := + Tag.update_by_tac_if_not_exists + pkg + TAG.one_sig + ltac:(fun _ => let sz := Tag.get pkg TAG.sz in + let m := Tag.get pkg TAG.m in + let wt := Tag.get pkg TAG.wt in + let one_sig := fresh "one_sig" in + let one_sig := pose_one_sig sz m wt one_sig in + constr:(one_sig)). +Ltac add_a24_sig pkg := + Tag.update_by_tac_if_not_exists + pkg + TAG.a24_sig + ltac:(fun _ => let sz := Tag.get pkg TAG.sz in + let m := Tag.get pkg TAG.m in + let wt := Tag.get pkg TAG.wt in + let a24 := Tag.get pkg TAG.a24 in + let a24_sig := fresh "a24_sig" in + let a24_sig := pose_a24_sig sz m wt a24 a24_sig in + constr:(a24_sig)). +Ltac add_add_sig pkg := + Tag.update_by_tac_if_not_exists + pkg + TAG.add_sig + ltac:(fun _ => let sz := Tag.get pkg TAG.sz in + let m := Tag.get pkg TAG.m in + let wt := Tag.get pkg TAG.wt in + let wt_nonzero := Tag.get pkg TAG.wt_nonzero in + let add_sig := fresh "add_sig" in + let add_sig := pose_add_sig sz m wt wt_nonzero add_sig in + constr:(add_sig)). +Ltac add_sub_sig pkg := + Tag.update_by_tac_if_not_exists + pkg + TAG.sub_sig + ltac:(fun _ => let sz := Tag.get pkg TAG.sz in + let m := Tag.get pkg TAG.m in + let wt := Tag.get pkg TAG.wt in + let wt_nonzero := Tag.get pkg TAG.wt_nonzero in + let coef := Tag.get pkg TAG.coef in + let sub_sig := fresh "sub_sig" in + let sub_sig := pose_sub_sig sz m wt wt_nonzero coef sub_sig in + constr:(sub_sig)). +Ltac add_opp_sig pkg := + Tag.update_by_tac_if_not_exists + pkg + TAG.opp_sig + ltac:(fun _ => let sz := Tag.get pkg TAG.sz in + let m := Tag.get pkg TAG.m in + let wt := Tag.get pkg TAG.wt in + let wt_nonzero := Tag.get pkg TAG.wt_nonzero in + let coef := Tag.get pkg TAG.coef in + let opp_sig := fresh "opp_sig" in + let opp_sig := pose_opp_sig sz m wt wt_nonzero coef opp_sig in + constr:(opp_sig)). +Ltac add_mul_sig pkg P_default_mul P_extra_prove_mul_eq := + Tag.update_by_tac_if_not_exists + pkg + TAG.mul_sig + ltac:(fun _ => let sz := Tag.get pkg TAG.sz in + let m := Tag.get pkg TAG.m in + let wt := Tag.get pkg TAG.wt in + let s := Tag.get pkg TAG.s in + let c := Tag.get pkg TAG.c in + let sz2 := Tag.get pkg TAG.sz2 in + let wt_nonzero := Tag.get pkg TAG.wt_nonzero in + let mul_sig := fresh "mul_sig" in + let mul_sig := pose_mul_sig P_default_mul P_extra_prove_mul_eq sz m wt s c sz2 wt_nonzero mul_sig in + constr:(mul_sig)). +Ltac add_square_sig pkg P_default_square P_extra_prove_square_eq := + Tag.update_by_tac_if_not_exists + pkg + TAG.square_sig + ltac:(fun _ => let sz := Tag.get pkg TAG.sz in + let m := Tag.get pkg TAG.m in + let wt := Tag.get pkg TAG.wt in + let s := Tag.get pkg TAG.s in + let c := Tag.get pkg TAG.c in + let sz2 := Tag.get pkg TAG.sz2 in + let wt_nonzero := Tag.get pkg TAG.wt_nonzero in + let square_sig := fresh "square_sig" in + let square_sig := pose_square_sig P_default_square P_extra_prove_square_eq sz m wt s c sz2 wt_nonzero square_sig in + constr:(square_sig)). +Ltac add_ring pkg := + Tag.update_by_tac_if_not_exists + pkg + TAG.ring + ltac:(fun _ => let sz := Tag.get pkg TAG.sz in + let m := Tag.get pkg TAG.m in + let wt := Tag.get pkg TAG.wt in + let wt_divides' := Tag.get pkg TAG.wt_divides' in + let sz_nonzero := Tag.get pkg TAG.sz_nonzero in + let wt_nonzero := Tag.get pkg TAG.wt_nonzero in + let zero_sig := Tag.get pkg TAG.zero_sig in + let one_sig := Tag.get pkg TAG.one_sig in + let opp_sig := Tag.get pkg TAG.opp_sig in + let add_sig := Tag.get pkg TAG.add_sig in + let sub_sig := Tag.get pkg TAG.sub_sig in + let mul_sig := Tag.get pkg TAG.mul_sig in + let ring := fresh "ring" in + let ring := pose_ring sz m wt wt_divides' sz_nonzero wt_nonzero zero_sig one_sig opp_sig add_sig sub_sig mul_sig ring in + constr:(ring)). +Ltac add_Defaults_package pkg P_default_mul P_extra_prove_mul_eq P_default_square P_extra_prove_square_eq := + let pkg := add_carry_sig pkg in + let pkg := add_zero_sig pkg in + let pkg := add_one_sig pkg in + let pkg := add_a24_sig pkg in + let pkg := add_add_sig pkg in + let pkg := add_sub_sig pkg in + let pkg := add_opp_sig pkg in + let pkg := add_mul_sig pkg P_default_mul P_extra_prove_mul_eq in + let pkg := add_square_sig pkg P_default_square P_extra_prove_square_eq in + let pkg := add_ring pkg in + Tag.strip_local pkg. + + +Module MakeDefaultsPackage (PKG : PrePackage). + Module Import MakeDefaultsPackageInternal := MakePackageBase PKG. + + Ltac get_carry_sig _ := get TAG.carry_sig. + Notation carry_sig := (ltac:(let v := get_carry_sig () in exact v)) (only parsing). + Ltac get_zero_sig _ := get TAG.zero_sig. + Notation zero_sig := (ltac:(let v := get_zero_sig () in exact v)) (only parsing). + Ltac get_one_sig _ := get TAG.one_sig. + Notation one_sig := (ltac:(let v := get_one_sig () in exact v)) (only parsing). + Ltac get_a24_sig _ := get TAG.a24_sig. + Notation a24_sig := (ltac:(let v := get_a24_sig () in exact v)) (only parsing). + Ltac get_add_sig _ := get TAG.add_sig. + Notation add_sig := (ltac:(let v := get_add_sig () in exact v)) (only parsing). + Ltac get_sub_sig _ := get TAG.sub_sig. + Notation sub_sig := (ltac:(let v := get_sub_sig () in exact v)) (only parsing). + Ltac get_opp_sig _ := get TAG.opp_sig. + Notation opp_sig := (ltac:(let v := get_opp_sig () in exact v)) (only parsing). + Ltac get_mul_sig _ := get TAG.mul_sig. + Notation mul_sig := (ltac:(let v := get_mul_sig () in exact v)) (only parsing). + Ltac get_square_sig _ := get TAG.square_sig. + Notation square_sig := (ltac:(let v := get_square_sig () in exact v)) (only parsing). + Ltac get_ring _ := get TAG.ring. + Notation ring := (ltac:(let v := get_ring () in exact v)) (only parsing). +End MakeDefaultsPackage. |