summaryrefslogtreecommitdiff
path: root/proofs/signatures/th_lra_test.plf
diff options
context:
space:
mode:
Diffstat (limited to 'proofs/signatures/th_lra_test.plf')
-rw-r--r--proofs/signatures/th_lra_test.plf155
1 files changed, 145 insertions, 10 deletions
diff --git a/proofs/signatures/th_lra_test.plf b/proofs/signatures/th_lra_test.plf
index 687ff988b..fb3ca828c 100644
--- a/proofs/signatures/th_lra_test.plf
+++ b/proofs/signatures/th_lra_test.plf
@@ -1,4 +1,10 @@
; Depends On: th_lra.plf
+;; Proof (from predicates on linear polynomials) that the following imply bottom
+;
+; -x - 1/2 y + 2 >= 0
+; x + y - 8 >= 0
+; x - y + 0 >= 0
+;
(check
; Variables
(% x var_real
@@ -11,22 +17,151 @@
(@ p1 (polyc 2/1 m1)
(@ p2 (polyc (~ 8/1) m2)
(@ p3 (polyc 0/1 m3)
- (% pf_nonneg_1 (th_holds (>=0_Real (poly_term p1)))
- (% pf_nonneg_2 (th_holds (>=0_Real (poly_term p2)))
- (% pf_nonneg_3 (th_holds (>=0_Real (poly_term p3)))
- (lra_contra_>=
- _
- (lra_add_>=_>= _ _ _
- (lra_mul_c_>= _ _ 4/1 pf_nonneg_1)
+ (% pf_nonneg_1 (th_holds (>=0_poly p1))
+ (% pf_nonneg_2 (th_holds (>=0_poly p2))
+ (% pf_nonneg_3 (th_holds (>=0_poly p3))
+ (:
+ (holds cln)
+ (lra_contra_>=
+ _
(lra_add_>=_>= _ _ _
- (lra_mul_c_>= _ _ 3/1 pf_nonneg_2)
+ (lra_mul_c_>= _ _ 4/1 pf_nonneg_1)
(lra_add_>=_>= _ _ _
- (lra_mul_c_>= _ _ 1/1 pf_nonneg_3)
- (lra_axiom_>= 0/1)))))
+ (lra_mul_c_>= _ _ 3/1 pf_nonneg_2)
+ (lra_add_>=_>= _ _ _
+ (lra_mul_c_>= _ _ 1/1 pf_nonneg_3)
+ (lra_axiom_>= 0/1))))))
)))))
))))
))
)
+;; Proof (from predicates on real terms) that the following imply bottom
+;
+; -x - 1/2 y >= 2
+; x + y >= 8
+; x - y >= 0
+;
+(check
+ ; Declarations
+ ; Variables
+ (% x var_real
+ (% y var_real
+ ; real predicates
+ (@ f1 (>=_Real (+_Real (*_Real (a_real (~ 1/1)) (a_var_real x)) (*_Real (a_real (~ 1/2)) (a_var_real y))) (a_real (~ 2/1)))
+ (@ f2 (>=_Real (+_Real (*_Real (a_real 1/1) (a_var_real x)) (*_Real (a_real 1/1) (a_var_real y))) (a_real 8/1))
+ (@ f3 (>=_Real (+_Real (*_Real (a_real 1/1) (a_var_real x)) (*_Real (a_real (~ 1/1)) (a_var_real y))) (a_real 0/1))
+ ; proof of real predicates
+ (% pf_f1 (th_holds f1)
+ (% pf_f2 (th_holds f2)
+ (% pf_f3 (th_holds f3)
+
+
+ ; Normalization
+ ; real term -> linear polynomial normalization witnesses
+ (@ n1 (poly_formula_norm_>= _ _ _
+ (pn_- _ _ _ _ _
+ (pn_+ _ _ _ _ _
+ (pn_mul_c_L _ _ _ (~ 1/1) (pn_var x))
+ (pn_mul_c_L _ _ _ (~ 1/2) (pn_var y)))
+ (pn_const (~ 2/1))))
+ (@ n2 (poly_formula_norm_>= _ _ _
+ (pn_- _ _ _ _ _
+ (pn_+ _ _ _ _ _
+ (pn_mul_c_L _ _ _ 1/1 (pn_var x))
+ (pn_mul_c_L _ _ _ 1/1 (pn_var y)))
+ (pn_const 8/1)))
+ (@ n3 (poly_formula_norm_>= _ _ _
+ (pn_- _ _ _ _ _
+ (pn_+ _ _ _ _ _
+ (pn_mul_c_L _ _ _ 1/1 (pn_var x))
+ (pn_mul_c_L _ _ _ (~ 1/1) (pn_var y)))
+ (pn_const 0/1)))
+ ; proof of linear polynomial predicates
+ (@ pf_n1 (poly_form _ _ n1 pf_f1)
+ (@ pf_n2 (poly_form _ _ n2 pf_f2)
+ (@ pf_n3 (poly_form _ _ n3 pf_f3)
+
+ ; derivation of a contradiction using farkas coefficients
+ (:
+ (holds cln)
+ (lra_contra_>= _
+ (lra_add_>=_>= _ _ _
+ (lra_mul_c_>= _ _ 4/1 pf_n1)
+ (lra_add_>=_>= _ _ _
+ (lra_mul_c_>= _ _ 3/1 pf_n2)
+ (lra_add_>=_>= _ _ _
+ (lra_mul_c_>= _ _ 1/1 pf_n3)
+ (lra_axiom_>= 0/1))))))
+ )))
+ )))
+ )))
+ )))
+ ))
+)
+
+;; Term proof, 2 (>=), one (not >=)
+;; Proof (from predicates on real terms) that the following imply bottom
+;
+; -x + y >= 2
+; x + y >= 2
+; not[ y >= -2] => [y < -2] => [-y > 2]
+;
+(check
+ ; Declarations
+ ; Variables
+ (% x var_real
+ (% y var_real
+ ; real predicates
+ (@ f1 (>=_Real
+ (+_Real (*_Real (a_real (~ 1/1)) (a_var_real x)) (a_var_real y))
+ (a_real 2/1))
+ (@ f2 (>=_Real
+ (+_Real (a_var_real x) (a_var_real y))
+ (a_real 2/1))
+ (@ f3 (not (>=_Real (a_var_real y) (a_real (~ 2/1))))
+ ; Normalization
+ ; proof of real predicates
+ (% pf_f1 (th_holds f1)
+ (% pf_f2 (th_holds f2)
+ (% pf_f3 (th_holds f3)
+ ; real term -> linear polynomial normalization witnesses
+ (@ n1 (poly_formula_norm_>= _ _ _
+ (pn_- _ _ _ _ _
+ (pn_+ _ _ _ _ _
+ (pn_mul_c_L _ _ _ (~ 1/1) (pn_var x))
+ (pn_var y))
+ (pn_const 2/1)))
+ (@ n2 (poly_formula_norm_>= _ _ _
+ (pn_- _ _ _ _ _
+ (pn_+ _ _ _ _ _
+ (pn_var x)
+ (pn_var y))
+ (pn_const 2/1)))
+ (@ n3 (poly_formula_norm_>= _ _ _
+ (pn_- _ _ _ _ _
+ (pn_var y)
+ (pn_const (~ 2/1))))
+ ; proof of linear polynomial predicates
+ (@ pf_n1 (poly_form _ _ n1 pf_f1)
+ (@ pf_n2 (poly_form _ _ n2 pf_f2)
+ (@ pf_n3 (poly_flip_not_>= _ _ (poly_form_not _ _ n3 pf_f3))
+ ; derivation of a contradiction using farkas coefficients
+ (:
+ (holds cln)
+ (lra_contra_> _
+ (lra_add_>=_> _ _ _
+ (lra_mul_c_>= _ _ 1/1 pf_n1)
+ (lra_add_>=_> _ _ _
+ (lra_mul_c_>= _ _ 1/1 pf_n2)
+ (lra_add_>_>= _ _ _
+ (lra_mul_c_> _ _ 2/1 pf_n3)
+ (lra_axiom_>= 0/1))))))
+ )))
+ )))
+ )))
+ )))
+ ))
+)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback