aboutsummaryrefslogtreecommitdiff
path: root/src/Util/SideConditions
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-11-07 14:50:20 -0500
committerGravatar Jason Gross <jgross@mit.edu>2017-11-07 14:50:20 -0500
commitf92069a3ddddf551ac313d58dcf02abeb098069e (patch)
tree4cb3df7ae8f77d66acd4a95079540a47306ef3f6 /src/Util/SideConditions
parent60c2cf3a365785210619bdc2d45030c3b0d20d7a (diff)
Add evar_function_package
Diffstat (limited to 'src/Util/SideConditions')
-rw-r--r--src/Util/SideConditions/CorePackages.v24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/Util/SideConditions/CorePackages.v b/src/Util/SideConditions/CorePackages.v
index 19612df0a..8126c5280 100644
--- a/src/Util/SideConditions/CorePackages.v
+++ b/src/Util/SideConditions/CorePackages.v
@@ -5,6 +5,13 @@ Record evar_package {T} (v : T) :=
evar_package_pf : val = v }.
Arguments val {T v} _.
Arguments evar_package_pf {T v} _.
+
+Record evar_function_package {A B} (f : forall x : A, B x) :=
+ { valf : forall x : A, B x;
+ evarf_package_pf : forall x, valf x = f x }.
+Arguments valf {A B f} _.
+Arguments evarf_package_pf {A B f} _ _.
+
Record evard_package {s d} (v : s) :=
{ vald : d;
evard_package_pfT : s = d;
@@ -13,4 +20,21 @@ Arguments vald {s d v} _.
Arguments evard_package_pfT {s d v} _.
Arguments evard_package_pf {s d v} _.
+Local Notation "'rew' 'dependent' H 'in' H'"
+ := (match H with
+ | eq_refl => H'
+ end)
+ (at level 10, H' at level 10,
+ format "'[' 'rew' 'dependent' '/ ' H in '/' H' ']'").
+
+Record evard_function_package {sA sB dA dB} (f : forall x : sA, sB x) :=
+ { valdf : forall x : dA, dB x;
+ evardf_package_pfTA : dA = sA;
+ evardf_package_pfTB : forall x, sB (rew evardf_package_pfTA in x) = dB x;
+ evardf_package_pf : forall x, valdf x = rew dependent evardf_package_pfTB x in (f (rew evardf_package_pfTA in x)) }.
+Arguments valdf {sA sB dA dB f} _ _.
+Arguments evardf_package_pfTA {sA sB dA dB f} _.
+Arguments evardf_package_pfTB {sA sB dA dB f} _.
+Arguments evardf_package_pf {sA sB dA dB f} _ _.
+
Ltac autosolve else_tac := else_tac ().