Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Open sidebar
POLLIEN Baptiste
paparazzi-frama-c
Commits
b8d7d146
Commit
b8d7d146
authored
May 10, 2021
by
POLLIEN Baptiste
Browse files
Update verification
parent
b0a63524
Changes
11
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
320 additions
and
33 deletions
+320
-33
sw/airborne/.frama-c/wp/script/float_quat_of_rmat_a00_max_ensures.json
...frama-c/wp/script/float_quat_of_rmat_a00_max_ensures.json
+3
-3
sw/airborne/.frama-c/wp/script/float_quat_of_rmat_a11_max_ensures.json
...frama-c/wp/script/float_quat_of_rmat_a11_max_ensures.json
+1
-1
sw/airborne/.frama-c/wp/script/float_quat_of_rmat_a22_max_ensures.json
...frama-c/wp/script/float_quat_of_rmat_a22_max_ensures.json
+1
-1
sw/airborne/.frama-c/wp/script/float_quat_of_rmat_assert.json
...irborne/.frama-c/wp/script/float_quat_of_rmat_assert.json
+12
-12
sw/airborne/.frama-c/wp/script/float_quat_of_rmat_assert_2.json
...borne/.frama-c/wp/script/float_quat_of_rmat_assert_2.json
+1
-1
sw/airborne/.frama-c/wp/script/float_quat_of_rmat_trace_pos_ensures.json
...ama-c/wp/script/float_quat_of_rmat_trace_pos_ensures.json
+1
-1
sw/airborne/.frama-c/wp/script/lemma_anticomm_cross_product.json
...orne/.frama-c/wp/script/lemma_anticomm_cross_product.json
+69
-0
sw/airborne/.frama-c/wp/script/lemma_quat_of_rmat_ortho.json
sw/airborne/.frama-c/wp/script/lemma_quat_of_rmat_ortho.json
+1
-1
sw/airborne/.frama-c/wp/script/lemma_reflivity_cross_product.json
...rne/.frama-c/wp/script/lemma_reflivity_cross_product.json
+7
-0
sw/airborne/.frama-c/wp/script/lemma_verify_rmat_of_quat_formula.json
....frama-c/wp/script/lemma_verify_rmat_of_quat_formula.json
+197
-0
sw/airborne/math/pprz_algebra_float_convert_rmat_frama_c.h
sw/airborne/math/pprz_algebra_float_convert_rmat_frama_c.h
+27
-13
No files found.
sw/airborne/.frama-c/wp/script/float_quat_of_rmat_a00_max_ensures.json
View file @
b8d7d146
...
...
@@ -64,10 +64,10 @@
{
"Then"
:
[
{
"prover"
:
"Z3:4.8.6:counterexamples"
,
"verdict"
:
"valid"
,
"time"
:
0.
49
,
"steps"
:
50
4498
}
],
"time"
:
0.
55
,
"steps"
:
50
5046
}
],
"Else"
:
[
{
"prover"
:
"Alt-Ergo:2.3.3"
,
"verdict"
:
"valid"
,
"time"
:
1.56
09
,
"time"
:
1.56
24
,
"steps"
:
988
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
sw/airborne/.frama-c/wp/script/float_quat_of_rmat_a11_max_ensures.json
View file @
b8d7d146
...
...
@@ -36,5 +36,5 @@
{
"Unfold 'L_trace_2_'"
:
[
{
"prover"
:
"Alt-Ergo:2.3.3"
,
"verdict"
:
"valid"
,
"time"
:
3
.5
52
,
"time"
:
2
.5
621
,
"steps"
:
1254
}
]
}
}
]
}
}
]
}
}
]
}
}
]
sw/airborne/.frama-c/wp/script/float_quat_of_rmat_a22_max_ensures.json
View file @
b8d7d146
...
...
@@ -58,7 +58,7 @@
{
"Unfold 'L_l_FloatQuat_of_RMat_2_max_1_'"
:
[
{
"prover"
:
"Alt-Ergo:2.3.3"
,
"verdict"
:
"valid"
,
"time"
:
2.83
36
,
"time"
:
2.
0
83
8
,
"steps"
:
1013
},
{
"header"
:
"Definition"
,
"tactic"
:
"Wp.unfold"
,
...
...
sw/airborne/.frama-c/wp/script/float_quat_of_rmat_assert.json
View file @
b8d7d146
...
...
@@ -49,8 +49,8 @@
{
"Then"
:
[
{
"prover"
:
"Z3:4.8.6:counterexamples"
,
"verdict"
:
"valid"
,
"time"
:
0.
49
,
"steps"
:
4
3984
4
}
],
"time"
:
0.
35
,
"steps"
:
4
4052
4
}
],
"Else"
:
[
{
"header"
:
"Split"
,
"tactic"
:
"Wp.split"
,
...
...
@@ -76,8 +76,8 @@
{
"Then"
:
[
{
"prover"
:
"Z3:4.8.6:counterexamples"
,
"verdict"
:
"valid"
,
"time"
:
0.4
1
,
"steps"
:
404
1
71
}
],
"time"
:
0.4
2
,
"steps"
:
4047
1
1
}
],
"Else"
:
[
{
"header"
:
"Split"
,
"tactic"
:
"Wp.split"
,
...
...
@@ -92,13 +92,13 @@
{
"Then"
:
[
{
"prover"
:
"Z3:4.8.6"
,
"verdict"
:
"valid"
,
"time"
:
0.0
9
,
"steps"
:
2
59776
}
],
"time"
:
0.0
7
,
"steps"
:
2
63164
}
],
"Else"
:
[
{
"prover"
:
"Z3:4.8.6:counterexamples"
,
"verdict"
:
"valid"
,
"time"
:
0.
5
,
"steps"
:
403
27
9
}
]
}
}
]
}
}
],
"time"
:
0.
39
,
"steps"
:
403
81
9
}
]
}
}
]
}
}
],
"Else"
:
[
{
"header"
:
"Split"
,
"tactic"
:
"Wp.split"
,
...
...
@@ -113,10 +113,10 @@
{
"Then"
:
[
{
"prover"
:
"Z3:4.8.6:counterexamples"
,
"verdict"
:
"valid"
,
"time"
:
0.
46
,
"steps"
:
404
14
5
}
],
"time"
:
0.
38
,
"steps"
:
404
82
5
}
],
"Else"
:
[
{
"prover"
:
"Z3:4.8.6:counterexamples"
,
"verdict"
:
"valid"
,
"time"
:
0.4
3
,
"steps"
:
40
0912
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
"time"
:
0.4
1
,
"steps"
:
40
1454
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
sw/airborne/.frama-c/wp/script/float_quat_of_rmat_assert_2.json
View file @
b8d7d146
...
...
@@ -3,5 +3,5 @@
"target"
:
"(P_rotation_matrix (L_l_RMat_of_FloatRMat Mf32_1 rm_0))"
,
"pattern"
:
"P_rotation_matrixL_l_RMat_of_FloatRMat"
},
"children"
:
{
"Filter"
:
[
{
"prover"
:
"Alt-Ergo:2.3.3"
,
"verdict"
:
"valid"
,
"time"
:
5.
7427
,
"verdict"
:
"valid"
,
"time"
:
5.
4778
,
"steps"
:
1628
}
]
}
}
]
sw/airborne/.frama-c/wp/script/float_quat_of_rmat_trace_pos_ensures.json
View file @
b8d7d146
...
...
@@ -70,7 +70,7 @@
{
"Unfold 'L_l_RMat_of_FloatRMat'"
:
[
{
"prover"
:
"Alt-Ergo:2.3.3"
,
"verdict"
:
"valid"
,
"time"
:
4.5503
,
"time"
:
3.7112
,
"steps"
:
809
},
{
"header"
:
"Definition"
,
"tactic"
:
"Wp.unfold"
,
...
...
sw/airborne/.frama-c/wp/script/lemma_anticomm_cross_product.json
0 → 100644
View file @
b8d7d146
[
{
"header"
:
"Definition"
,
"tactic"
:
"Wp.unfold"
,
"params"
:
{},
"select"
:
{
"select"
:
"inside-goal"
,
"occur"
:
0
,
"target"
:
"(L_cross_product v2_0 v1_0)"
,
"pattern"
:
"L_cross_product$v2$v1"
},
"children"
:
{
"Unfold 'L_cross_product'"
:
[
{
"header"
:
"Definition"
,
"tactic"
:
"Wp.unfold"
,
"params"
:
{},
"select"
:
{
"select"
:
"inside-goal"
,
"occur"
:
0
,
"target"
:
"let r_0 = v1_0.F12_RealVect3_s_y in
\n
let r_1 = v2_0.F12_RealVect3_s_z in
\n
let r_2 = v1_0.F12_RealVect3_s_z in
\n
let r_3 = v2_0.F12_RealVect3_s_y in
\n
let r_4 = v2_0.F12_RealVect3_s_x in
\n
let r_5 = v1_0.F12_RealVect3_s_x in
\n
(L_mult_scalar_1_ -1
\n
{
\n
F12_RealVect3_s_x = (r_2*r_3)-(r_0*r_1) ;
\n
F12_RealVect3_s_y = (r_5*r_1)-(r_2*r_4) ;
\n
F12_RealVect3_s_z = (r_0*r_4)-(r_5*r_3)
\n
})"
,
"pattern"
:
"L_mult_scalar_1_-1{RealVect3_s}+"
},
"children"
:
{
"Unfold 'L_mult_scalar_1_'"
:
[
{
"header"
:
"Definition"
,
"tactic"
:
"Wp.unfold"
,
"params"
:
{},
"select"
:
{
"select"
:
"inside-goal"
,
"occur"
:
0
,
"target"
:
"(L_cross_product v1_0 v2_0)"
,
"pattern"
:
"L_cross_product$v1$v2"
},
"children"
:
{
"Unfold 'L_cross_product'"
:
[
{
"header"
:
"Definition"
,
"tactic"
:
"Wp.unfold"
,
"params"
:
{},
"select"
:
{
"select"
:
"clause-goal"
,
"target"
:
"let r_0 = v1_0.F12_RealVect3_s_z in
\n
let r_1 = v2_0.F12_RealVect3_s_y in
\n
let r_2 = (r_0*r_1) in
\n
let r_3 = v1_0.F12_RealVect3_s_y in
\n
let r_4 = v2_0.F12_RealVect3_s_z in
\n
let r_5 = (r_3*r_4) in
\n
let r_6 = v1_0.F12_RealVect3_s_x in
\n
let r_7 = (r_6*r_4) in
\n
let r_8 = v2_0.F12_RealVect3_s_x in
\n
let r_9 = (r_0*r_8) in
\n
let r_10 = (r_3*r_8) in
\n
let r_11 = (r_6*r_1) in
\n
(EqS12_RealVect3_s
\n
{
\n
F12_RealVect3_s_x = r_5-r_2 ;
\n
F12_RealVect3_s_y = r_9-r_7 ;
\n
F12_RealVect3_s_z = r_11-r_10
\n
}
\n
{
\n
F12_RealVect3_s_x = -1*(r_2-r_5) ;
\n
F12_RealVect3_s_y = -1*(r_7-r_9) ;
\n
F12_RealVect3_s_z = -1*(r_10-r_11)
\n
})"
,
"pattern"
:
"EqS12_RealVect3_s{RealVect3_s}{RealVect3_s}"
},
"children"
:
{
"Unfold 'EqS12_RealVect3_s'"
:
[
{
"prover"
:
"Alt-Ergo:2.3.3"
,
"verdict"
:
"valid"
,
"time"
:
0.0181
,
"steps"
:
8
},
{
"header"
:
"Split"
,
"tactic"
:
"Wp.split"
,
"params"
:
{},
"select"
:
{
"select"
:
"clause-goal"
,
"target"
:
"let r_0 = v1_0.F12_RealVect3_s_x in
\n
let r_1 = v2_0.F12_RealVect3_s_x in
\n
let r_2 = (r_0*r_1) in
\n
let r_3 = v1_0.F12_RealVect3_s_y in
\n
let r_4 = v2_0.F12_RealVect3_s_y in
\n
let r_5 = (r_3*r_4) in
\n
let r_6 = v2_0.F12_RealVect3_s_z in
\n
let r_7 = (r_3*r_6) in
\n
let r_8 = v1_0.F12_RealVect3_s_z in
\n
let r_9 = (r_8*r_4) in
\n
let r_10 = (r_8*r_1) in
\n
let r_11 = (r_0*r_6) in
\n
(r_2=(r_5+(-1*(r_2-r_5)))) /
\\
(r_7=(r_9+(-1*(r_9-r_7))))
\n
/
\\
(r_10=(r_11+(-1*(r_11-r_10))))"
,
"pattern"
:
"&===*+*+*+.F12_RealVect3_s_x.F12_RealVect3_s_x"
},
"children"
:
{
"Goal 1/3"
:
[
{
"prover"
:
"Z3:4.8.6:noBV"
,
"verdict"
:
"timeout"
,
"time"
:
10
.
},
{
"prover"
:
"Z3:4.8.6:counterexamples"
,
"verdict"
:
"unknown"
},
{
"prover"
:
"Z3:4.8.6"
,
"verdict"
:
"timeout"
,
"time"
:
10
.
},
{
"prover"
:
"Coq:8.12.2"
,
"verdict"
:
"unknown"
},
{
"prover"
:
"CVC4:1.9-prerelease:strings+counterexamples"
,
"verdict"
:
"unknown"
},
{
"prover"
:
"Alt-Ergo:2.3.3"
,
"verdict"
:
"timeout"
,
"time"
:
10
.
}
],
"Goal 2/3"
:
[
{
"prover"
:
"Alt-Ergo:2.3.3"
,
"verdict"
:
"valid"
,
"time"
:
0.0062
,
"steps"
:
8
}
],
"Goal 3/3"
:
[
{
"prover"
:
"Alt-Ergo:2.3.3"
,
"verdict"
:
"valid"
,
"time"
:
0.0109
,
"steps"
:
8
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
sw/airborne/.frama-c/wp/script/lemma_quat_of_rmat_ortho.json
View file @
b8d7d146
...
...
@@ -63,5 +63,5 @@
{
"Unfold 'EqS13_RealRMat_s'"
:
[
{
"prover"
:
"Z3:4.8.6:counterexamples"
,
"verdict"
:
"valid"
,
"time"
:
0.0
4
,
"time"
:
0.0
3
,
"steps"
:
51791
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
sw/airborne/.frama-c/wp/script/lemma_reflivity_cross_product.json
0 → 100644
View file @
b8d7d146
[
{
"prover"
:
"Z3:4.8.6:noBV"
,
"verdict"
:
"timeout"
,
"time"
:
10
.
},
{
"prover"
:
"Z3:4.8.6:counterexamples"
,
"verdict"
:
"timeout"
,
"time"
:
10
.
},
{
"prover"
:
"Z3:4.8.6"
,
"verdict"
:
"timeout"
,
"time"
:
10
.
},
{
"prover"
:
"Coq:8.12.2"
,
"verdict"
:
"unknown"
},
{
"prover"
:
"CVC4:1.9-prerelease:strings+counterexamples"
,
"verdict"
:
"timeout"
,
"time"
:
10
.
},
{
"prover"
:
"Alt-Ergo:2.3.3"
,
"verdict"
:
"timeout"
,
"time"
:
10
.
}
]
sw/airborne/.frama-c/wp/script/lemma_verify_rmat_of_quat_formula.json
0 → 100644
View file @
b8d7d146
This diff is collapsed.
Click to expand it.
sw/airborne/math/pprz_algebra_float_convert_rmat_frama_c.h
View file @
b8d7d146
...
...
@@ -317,7 +317,7 @@ logic RealQuat conj(struct FloatQuat *q) =
/*@ ghost
struct RealQuatVect_s {float scalar;
struct RealVect3_s v;};
struct RealVect3_s v
ect
;};
*/
//@ type RealQuatVect = struct RealQuatVect_s;
...
...
@@ -330,16 +330,16 @@ logic RealQuat conj(struct FloatQuat *q) =
vqz) \
{{empty_quatvect \
\with .scalar = (float) (vqi)} \
\with .v = ({{{empty_vect3 \
\with .v
ect
= ({{{empty_vect3 \
\with .x = (float) (vqx)} \
\with .y = (float) (vqy)} \
\with .z = (float) (vqz)})}
#define REALQUATVECT_FVECT(vqi, \
v
ect
) \
v) \
{{empty_quatvect \
\with .scalar = (float) (vqi)} \
\with .v = (v
ect
)}
\with .v
ect
= (v)}
/*@
logic RealQuatVect l_QuatVect_of_FloatQuat(struct FloatQuat *q) =
...
...
@@ -348,7 +348,7 @@ logic RealQuatVect l_QuatVect_of_FloatQuat(struct FloatQuat *q) =
/*@
logic RealQuat l_Quat_of_RealQuatVect(RealQuatVect q) =
REALQUAT(q.scalar, q.v.x, q.v.y, q.v.y);
REALQUAT(q.scalar, q.v
ect
.x, q.v
ect
.y, q.v
ect
.y);
*/
/*@
...
...
@@ -358,11 +358,11 @@ logic RealQuatVect l_QuatVect_of_RealQuat(RealQuat q) =
/*@
logic RealQuatVect mult_RealQuatVect(RealQuatVect q1, RealQuatVect q2) =
\let scalar = q1.scalar * q2.scalar - scalar_product(q1.v, q2.v);
\let scalar = q1.scalar * q2.scalar - scalar_product(q1.v
ect
, q2.v
ect
);
\let vect = add_RealVect3(add_RealVect3(
mult_scalar(q1.scalar, q2.v),
mult_scalar(q2.scalar, q1.v)),
cross_product(q1.v, q2.v));
mult_scalar(q1.scalar, q2.v
ect
),
mult_scalar(q2.scalar, q1.v
ect
)),
cross_product(q1.v
ect
, q2.v
ect
));
REALQUATVECT_FVECT(scalar, vect);
*/
...
...
@@ -373,7 +373,7 @@ logic RealQuatVect conj_v(struct FloatQuat *q) =
/*@
logic RealQuatVect conj_v(RealQuatVect q) =
\let vect = neg_vect(q.v);
\let vect = neg_vect(q.v
ect
);
REALQUATVECT_FVECT(q.scalar, vect);
*/
...
...
@@ -501,14 +501,28 @@ logic RealRMat l_RMat_of_FloatQuat(RealQuat q) =
==> special_orthogonal(l_RMat_of_FloatQuat(q));
*/
/*@
logic RealQuatVect rotation_with_quat(RealQuatVect q, RealQuatVect v) =
mult_RealQuatVect(mult_RealQuatVect(q, v), conj_v(q));
*/
/*@
logic RealQuatVect rotation_with_quat(RealQuatVect q, RealVect3 v) =
rotation_with_quat(q, REALQUATVECT_FVECT(0, v));
*/
/*@
logic RealQuatVect rotation_with_quat(struct FloatQuat *q, RealVect3 v) =
rotation_with_quat(l_QuatVect_of_FloatQuat(q), v);
*/
/*@
lemma verify_rmat_of_quat_formula:
\forall struct FloatQuat *q, struct FloatVect3 *v;
\let vect = l_Vect_of_FloatVect3(v);
\let rmat = l_RMat_of_FloatQuat(q);
\let mult_quat = mult_RealQuatVect(l_QuatVect_of_FloatQuat(q), REALQUATVECT_FVECT(0, vect));
mult_RealQuatVect(mult_quat, conj_v(q))
== REALQUATVECT_FVECT(0, mult_RealRMat_RealVect3(rmat, vect));
\let quat_rot = rotation_with_quat(q, vect);
quat_rot == REALQUATVECT_FVECT(0, mult_RealRMat_RealVect3(rmat, vect));
*/
/*******************************
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment