Package machine-code-straightline: Hoare logic triple support for straightline code
Information
name | machine-code-straightline |
version | 1.0 |
description | Hoare logic triple support for straightline code |
author | HOL OpenTheory Packager <opentheory-packager@hol-theorem-prover.org> |
license | MIT |
checksum | 4f9f4e876569966d0c36c5decfc29b2bd3bc21ad |
requires | base hol-base hol-string hol-sort hol-words hol-integer machine-code-hoare-logic machine-code-hoare-triple arm-model arm-step arm-prog arm-decomp m0-model m0-prog m0-decomp |
show | Data.Bool Data.List Data.Option Data.Pair Function HOL4 Number.Natural Relation |
Files
- Package tarball machine-code-straightline-1.0.tgz
- Theory source file machine-code-straightline.thy (included in the package tarball)
Defined Type Operators
- HOL4
- GraphLang
- GraphLang.code
- GraphLang.func
- GraphLang.graph_function
- GraphLang.inst
- GraphLang.jump
- GraphLang.next
- GraphLang.next_node
- GraphLang.node
- GraphLang.variable
- GraphLang
Defined Constants
- HOL4
- straightline
- straightline.arm_assert
- straightline.DO_NOTHING
- GraphLang
- GraphLang.all_names
- GraphLang.all_names_ignore
- GraphLang.all_names_with_input
- GraphLang.apply_update
- GraphLang.arm_STACK_MEMORY
- GraphLang.arm_STATE
- GraphLang.arm_STATE_CPSR
- GraphLang.arm_STATE_REGS
- GraphLang.arm_assert_for
- GraphLang.carry_out
- GraphLang.check_jump
- GraphLang.check_ret
- GraphLang.code_CASE
- GraphLang.code_size
- GraphLang.count_leading_zero_bits
- GraphLang.default_state
- GraphLang.exec_graph
- GraphLang.exec_graph_n
- GraphLang.exec_graph_step
- GraphLang.exec_next
- GraphLang.exec_node
- GraphLang.exec_node_return
- GraphLang.find_func
- GraphLang.find_func_tupled
- GraphLang.find_inst
- GraphLang.find_inst_tupled
- GraphLang.fold
- GraphLang.fs_locs
- GraphLang.func_CASE
- GraphLang.func_body_trans
- GraphLang.func_name
- GraphLang.func_ok
- GraphLang.func_size
- GraphLang.func_trans
- GraphLang.funcs_ok
- GraphLang.get_assert
- GraphLang.get_jump
- GraphLang.good_stack
- GraphLang.good_stack_tail
- GraphLang.good_stack_tail_tupled
- GraphLang.graph
- GraphLang.graph_function_CASE
- GraphLang.graph_function_size
- GraphLang.init_vars
- GraphLang.inst_CASE
- GraphLang.inst_loc
- GraphLang.inst_size
- GraphLang.inst_trans
- GraphLang.jump_CASE
- GraphLang.jump_ok
- GraphLang.jump_size
- GraphLang.list_func_trans
- GraphLang.list_inst_trans
- GraphLang.m0_STACK_MEMORY
- GraphLang.m0_STATE
- GraphLang.m0_STATE_PSR
- GraphLang.m0_STATE_REGS
- GraphLang.m0_assert_for
- GraphLang.next_CASE
- GraphLang.next_node_CASE
- GraphLang.next_node_size
- GraphLang.next_ok
- GraphLang.next_size
- GraphLang.next_trans
- GraphLang.next_trans_tupled
- GraphLang.next_trans_tupled_aux
- GraphLang.node_CASE
- GraphLang.node_size
- GraphLang.odd_nums
- GraphLang.ret_and_all_names
- GraphLang.return_vars
- GraphLang.save_vals
- GraphLang.unspecified_pre
- GraphLang.upd_ok
- GraphLang.upd_stack
- GraphLang.upd_vars
- GraphLang.var_acc
- GraphLang.var_bool
- GraphLang.var_dom
- GraphLang.var_mem
- GraphLang.var_nat
- GraphLang.var_upd
- GraphLang.var_word32
- GraphLang.var_word8
- GraphLang.variable_CASE
- GraphLang.variable_size
- GraphLang.word32
- GraphLang.word_add_with_carry
- GraphLang.ARM
- GraphLang.ASM
- GraphLang.Basic
- GraphLang.CALL
- GraphLang.CALL_TAG
- GraphLang.Call
- GraphLang.Cond
- GraphLang.Err
- GraphLang.Func
- GraphLang.GraphFunction
- GraphLang.IF
- GraphLang.IMPL_INST
- GraphLang.Inst
- GraphLang.Jump
- GraphLang.LIST_IMPL_INST
- GraphLang.LIST_IMPL_INST_tupled
- GraphLang.LIST_SUBSET
- GraphLang.M0
- GraphLang.MemAcc32
- GraphLang.MemAcc8
- GraphLang.MemUpdate32
- GraphLang.MemUpdate8
- GraphLang.NextNode
- GraphLang.READ32
- GraphLang.READ8
- GraphLang.Ret
- GraphLang.Return
- GraphLang.SKIP_TAG
- GraphLang.ShiftLeft
- GraphLang.ShiftRight
- GraphLang.SignedShiftRight
- GraphLang.Skip
- GraphLang.VarBool
- GraphLang.VarDom
- GraphLang.VarMem
- GraphLang.VarNat
- GraphLang.VarNone
- GraphLang.VarWord32
- GraphLang.VarWord8
- GraphLang.WRITE32
- GraphLang.WRITE8
- straightline
Theorems
⊦ GraphLang.unspecified_pre ⇔ ⊥
⊦ GraphLang.arm_STACK_MEMORY = arm_prog.arm_MEMORY
⊦ GraphLang.m0_STACK_MEMORY = m0_prog.m0_MEMORY
⊦ GraphLang.default_state = λx. GraphLang.VarNone
⊦ (λv1. v1) = id
⊦ GraphLang.apply_update [] s = s
⊦ (x ⇔ ⊤) ⇒ x
⊦ (⊤ ⇒ b) ⇒ b
⊦ ∀x. straightline.DO_NOTHING x = x
⊦ ∀s. GraphLang.SKIP_TAG s ⇔ GraphLang.unspecified_pre
⊦ ∀a. ¬(GraphLang.Jump a = GraphLang.Return)
⊦ ∀f. GraphLang.func_body_trans f = snd (GraphLang.func_trans f)
⊦ ∀w.
GraphLang.count_leading_zero_bits w =
words.n2w (arm.CountLeadingZeroBits w)
⊦ ∀Gamma.
GraphLang.exec_graph Gamma =
relation.RTC (GraphLang.exec_graph_step Gamma)
⊦ ∀s is_tail_call. GraphLang.CALL_TAG s is_tail_call ⇔ ⊤
⊦ ∀fs.
GraphLang.list_func_trans fs =
GraphLang.graph (map GraphLang.func_trans fs)
⊦ ∀nn. GraphLang.Skip nn = GraphLang.Cond nn nn (λx. ⊤)
⊦ ∀nm f. GraphLang.var_acc nm f = f nm
⊦ ∀a mem. GraphLang.READ8 a mem = mem a
⊦ ∀a' a. ¬(GraphLang.ARM a = GraphLang.M0 a')
⊦ ¬(x = y) ⇔ ¬(y = x)
⊦ ∀m a. GraphLang.MemAcc8 m a = GraphLang.READ8 a m
⊦ ∀m a. GraphLang.MemAcc32 m a = GraphLang.READ32 a m
⊦ ∀jj. (∃c. jj = GraphLang.Jump c) ∨ jj = GraphLang.Return
⊦ ∀x x1. GraphLang.find_func x x1 = GraphLang.find_func_tupled (x, x1)
⊦ ∀x x1.
GraphLang.good_stack_tail x x1 ⇔
GraphLang.good_stack_tail_tupled (x, x1)
⊦ ∀w y. GraphLang.ShiftLeft w y = words.word_lsl w (words.w2n y)
⊦ ∀w y. GraphLang.ShiftRight w y = words.word_lsr w (words.w2n y)
⊦ ∀w y. GraphLang.SignedShiftRight w y = words.word_asr w (words.w2n y)
⊦ ∀Gamma n.
GraphLang.exec_graph_n Gamma n =
arithmetic.NRC (GraphLang.exec_graph_step Gamma) n
⊦ ∀x x1. GraphLang.find_inst x x1 = GraphLang.find_inst_tupled (x, x1)
⊦ arm.Aligned (w, n) ⇒ arm.Align (w, n) = w
⊦ set_sep.STAR set_sep.emp p = p ∧ set_sep.STAR p set_sep.emp = p
⊦ ∀name entry l. GraphLang.func_name (GraphLang.Func name entry l) = name
⊦ GraphLang.list_func_trans fs =
GraphLang.graph
(map (λf. (GraphLang.func_name f, GraphLang.func_body_trans f)) fs)
⊦ ∀ff. ∃s c l. ff = GraphLang.Func s c l
⊦ ∀ii. ∃c f n. ii = GraphLang.Inst c f n
⊦ ∀a a'. GraphLang.NextNode a = GraphLang.NextNode a' ⇔ a = a'
⊦ ∀a a'. GraphLang.Jump a = GraphLang.Jump a' ⇔ a = a'
⊦ const x = (λy. x) ∧ suc = λn. n + 1
⊦ GraphLang.get_assert none = (λx. ⊤) ∧
∀a. GraphLang.get_assert (some a) = a
⊦ ∀loc v0 v1. GraphLang.inst_loc (GraphLang.Inst loc v0 v1) = words.w2n loc
⊦ (∀a. GraphLang.jump_size (GraphLang.Jump a) = 1) ∧
GraphLang.jump_size GraphLang.Return = 0
⊦ ∀code fs.
GraphLang.funcs_ok code fs ⇔
all (GraphLang.func_ok code (GraphLang.fs_locs fs)) fs
⊦ address.ALIGNED w ⇒ ¬fcp.fcp_index w 0 ∧ ¬fcp.fcp_index w 1
⊦ words.n2w (arm.CountLeadingZeroBits w) =
GraphLang.count_leading_zero_bits w ∧
words.n2w (m0.CountLeadingZeroBits w) =
GraphLang.count_leading_zero_bits w
⊦ ∀nm v f. GraphLang.var_upd nm v f = combin.UPDATE nm v f
⊦ ∀cc. (∃f. cc = GraphLang.ARM f) ∨ ∃f. cc = GraphLang.M0 f
⊦ ∀xs ys.
GraphLang.LIST_SUBSET xs ys ⇔
all (λx. bool.IN x (list.LIST_TO_SET ys)) xs
⊦ ∀P. (∀c. P (GraphLang.Jump c)) ∧ P GraphLang.Return ⇒ ∀jj. P jj
⊦ ∀a w mem. GraphLang.WRITE8 a w mem = combin.UPDATE a w mem
⊦ ∀m a w. GraphLang.MemUpdate8 m a w = GraphLang.WRITE8 a w m
⊦ ∀m a w. GraphLang.MemUpdate32 m a w = GraphLang.WRITE32 a w m
⊦ all (λn. s1 n = s2 n) GraphLang.all_names ⇒
GraphLang.arm_STATE s1 = GraphLang.arm_STATE s2
⊦ all (λn. s1 n = s2 n) GraphLang.all_names ⇒
GraphLang.m0_STATE s1 = GraphLang.m0_STATE s2
⊦ (∀p. GraphLang.jump_ok (GraphLang.Jump p) ⇔ even (words.w2n p)) ∧
(GraphLang.jump_ok GraphLang.Return ⇔ ⊤)
⊦ (∀j.
GraphLang.get_jump (GraphLang.Jump j) =
GraphLang.NextNode (words.w2n j)) ∧
GraphLang.get_jump GraphLang.Return = GraphLang.Ret
⊦ ∀gg. ∃l l0 f n. gg = GraphLang.GraphFunction l l0 f n
⊦ ∀u.
GraphLang.upd_ok u ⇔
list.ALL_DISTINCT (map fst u) ∧
GraphLang.LIST_SUBSET (map fst u) GraphLang.all_names
⊦ ∀nn.
(∃n. nn = GraphLang.NextNode n) ∨ nn = GraphLang.Ret ∨
nn = GraphLang.Err
⊦ set_sep.STAR (if b then x else y) q =
if b then set_sep.STAR x q else set_sep.STAR y q
⊦ t1 = t2 ∧ u1 = u2 ⇒ (t1, u1) = (t2, u2)
⊦ ∀x x1 x2.
GraphLang.LIST_IMPL_INST x x1 x2 ⇔
GraphLang.LIST_IMPL_INST_tupled (x, x1, x2)
⊦ ∀x x1 x2.
GraphLang.next_trans x x1 x2 = GraphLang.next_trans_tupled (x, x1, x2)
⊦ ∀P. (∀s c l. P (GraphLang.Func s c l)) ⇒ ∀ff. P ff
⊦ ∀P. (∀c f n. P (GraphLang.Inst c f n)) ⇒ ∀ii. P ii
⊦ ∀a0 a1 a2.
GraphLang.inst_size (GraphLang.Inst a0 a1 a2) =
1 + GraphLang.next_size a2
⊦ ∀P. (∀f. P (GraphLang.ARM f)) ∧ (∀f. P (GraphLang.M0 f)) ⇒ ∀cc. P cc
⊦ (∀a. GraphLang.code_size (GraphLang.ARM a) = 1) ∧
∀a. GraphLang.code_size (GraphLang.M0 a) = 1
⊦ ∀xs n ys. list.DROP (length xs + n) (xs @ ys) = list.DROP n ys
⊦ ∀P.
(∀n. P (GraphLang.NextNode n)) ∧ P GraphLang.Ret ∧ P GraphLang.Err ⇒
∀nn. P nn
⊦ ∀w1 w2 c.
GraphLang.word_add_with_carry w1 w2 c =
fst (words.add_with_carry (w1, w2, c))
⊦ ∀vars accs st.
GraphLang.init_vars vars accs st =
GraphLang.save_vals vars (map (λi. i st) accs) GraphLang.default_state
⊦ ∀a0 a1 a2 f. GraphLang.func_CASE (GraphLang.Func a0 a1 a2) f = f a0 a1 a2
⊦ ∀inner outer inner_st.
GraphLang.return_vars inner outer inner_st =
GraphLang.save_vals outer
(map (λv. GraphLang.var_acc v inner_st) inner)
⊦ ∀a0 a1 a2 f. GraphLang.inst_CASE (GraphLang.Inst a0 a1 a2) f = f a0 a1 a2
⊦ ∀f0 f1.
∃fn. (∀a. fn (GraphLang.Jump a) = f0 a) ∧ fn GraphLang.Return = f1
⊦ ∀asm.
prog.SPEC arm_prog.ARM_MODEL
(set_sep.STAR (arm_prog.arm_PC p)
(set_sep.cond (GraphLang.SKIP_TAG asm))) pred_set.EMPTY
(arm_prog.arm_PC (words.word_add p (words.n2w (arithmetic.BIT2 1))))
⊦ ∀w1 w2 c.
GraphLang.carry_out w1 w2 c ⇔
fst (snd (words.add_with_carry (w1, w2, c)))
⊦ ∀f. ∃fn. ∀a0 a1 a2. fn (GraphLang.Func a0 a1 a2) = f a0 a1 a2
⊦ ∀f. ∃fn. ∀a0 a1 a2. fn (GraphLang.Inst a0 a1 a2) = f a0 a1 a2
⊦ GraphLang.IMPL_INST c locs (GraphLang.Inst n (const ⊤) next) ⇒
∀a. GraphLang.IMPL_INST c locs (GraphLang.Inst n a next)
⊦ ∀t l v0 next.
GraphLang.inst_trans t (GraphLang.Inst l v0 next) =
GraphLang.next_trans (words.w2n l) t next
⊦ ∀P. (∀l l0 f n. P (GraphLang.GraphFunction l l0 f n)) ⇒ ∀gg. P gg
⊦ ∀upds st.
GraphLang.upd_vars upds st =
GraphLang.save_vals (map fst upds)
(map (pair.UNCURRY (λnm vf. vf st)) upds) st
⊦ ¬fcp.fcp_index w 0 ∧ ¬fcp.fcp_index w 1 ⇒
(b ⇒ address.ALIGNED w ⇔ address.ALIGNED w)
⊦ GraphLang.func_ok code locs f ∧ all (GraphLang.func_ok code locs) fs ⇒
all (GraphLang.func_ok code locs) (f :: fs)
⊦ ∀b1 b2 b3 b4.
GraphLang.word32 b1 b2 b3 b4 =
words.word_concat b1 (words.word_concat b2 (words.word_concat b3 b4))
⊦ (∀a. ¬(GraphLang.NextNode a = GraphLang.Ret)) ∧
(∀a. ¬(GraphLang.NextNode a = GraphLang.Err)) ∧
¬(GraphLang.Ret = GraphLang.Err)
⊦ ∀fs stack.
GraphLang.good_stack fs stack ⇔
GraphLang.good_stack_tail fs stack ∧
GraphLang.next_node_CASE (fst (head stack)) (λn. even n) ⊤ ⊥
⊦ (∀a. GraphLang.next_node_size (GraphLang.NextNode a) = 1 + a) ∧
GraphLang.next_node_size GraphLang.Ret = 0 ∧
GraphLang.next_node_size GraphLang.Err = 0
⊦ ∀vars vals st.
GraphLang.save_vals vars vals st =
GraphLang.fold (pair.UNCURRY (λvar val. GraphLang.var_upd var val))
(list.ZIP (vars, vals)) st
⊦ ∀a0 a1 a2.
GraphLang.func_size (GraphLang.Func a0 a1 a2) =
1 +
(list.list_size string.char_size a0 +
list.list_size GraphLang.inst_size a2)
⊦ ∀a0 a1 a2 a3 f.
GraphLang.graph_function_CASE (GraphLang.GraphFunction a0 a1 a2 a3) f =
f a0 a1 a2 a3
⊦ ∀f0 f1.
∃fn. (∀a. fn (GraphLang.ARM a) = f0 a) ∧ ∀a. fn (GraphLang.M0 a) = f1 a
⊦ ∀xs n. n ≤ length xs ⇒ ∃ys zs. xs = ys @ zs ∧ length ys = n
⊦ ∀nm st.
GraphLang.var_bool nm st ⇔
GraphLang.variable_CASE (GraphLang.var_acc nm st) ⊥ (λv6. ⊥) (λv7. ⊥)
(λv8. ⊥) (λv9. ⊥) (λv10. ⊥) (λq. q)
⊦ ∀nm st.
GraphLang.var_nat nm st =
GraphLang.variable_CASE (GraphLang.var_acc nm st) 0 (λn. n) (λv7. 0)
(λv8. 0) (λv9. 0) (λv10. 0) (λv11. 0)
⊦ ∀nm st.
GraphLang.var_dom nm st =
GraphLang.variable_CASE (GraphLang.var_acc nm st) pred_set.EMPTY
(λv6. pred_set.EMPTY) (λv7. pred_set.EMPTY) (λv8. pred_set.EMPTY)
(λv9. pred_set.EMPTY) (λd. d) (λv11. pred_set.EMPTY)
⊦ ∀f.
∃fn.
∀a0 a1 a2 a3.
fn (GraphLang.GraphFunction a0 a1 a2 a3) = f a0 a1 a2 a3
⊦ words.word_msb (words.n2w n) ⇔
n div arithmetic.BIT2 0 ↑ 31 mod arithmetic.BIT2 0 = 1
⊦ ∀name entry l.
GraphLang.func_trans (GraphLang.Func name entry l) =
(name,
GraphLang.GraphFunction GraphLang.ret_and_all_names
GraphLang.all_names_with_input
(GraphLang.graph (GraphLang.list_inst_trans 1 l)) (words.w2n entry))
⊦ ∀insts.
GraphLang.LIST_IMPL_INST code names insts ⇒
list.ALL_DISTINCT (map GraphLang.inst_loc insts) ∧
even (words.w2n entry) ⇒
GraphLang.func_ok code names (GraphLang.Func name entry insts)
⊦ ∀P. P [] ∧ (∀x y xs. P xs ⇒ P ((x, y) :: xs)) ⇒ ∀v. P v
⊦ prog.SPEC m (set_sep.STAR p (r x)) c q ⇒
∀pc. pc = x ⇒ prog.SPEC m (set_sep.STAR p (r pc)) c q
⊦ prog.SPEC m (set_sep.STAR pre (res w)) code q ⇒
∀p. p = w ⇒ prog.SPEC m (set_sep.STAR pre (res p)) code q
⊦ (∀a f v. GraphLang.jump_CASE (GraphLang.Jump a) f v = f a) ∧
∀f v. GraphLang.jump_CASE GraphLang.Return f v = v
⊦ ∀P.
P [] ∧ (∀loc state name rest. P ((loc, state, name) :: rest)) ⇒ ∀z. P z
⊦ (c_post ⇒ prog.SPEC model (assert p) code (assert post)) ⇒
triple.TRIPLE (assert, model) (pre, p) code (pre ∧ c_post, post)
⊦ t1 = t2 ∧ (y1 = y2 ⇒ u1 = u2) ⇒ y1 = y2 ⇒ (t1, u1) = (t2, u2)
⊦ (x1 = x2 ⇒ t1 = t2) ∧ u1 = u2 ⇒ x1 = x2 ⇒ (t1, u1) = (t2, u2)
⊦ ∀f0 f1 f2.
∃fn.
(∀a. fn (GraphLang.NextNode a) = f0 a) ∧ fn GraphLang.Ret = f1 ∧
fn GraphLang.Err = f2
⊦ GraphLang.graph [] = const none ∧
∀y xs x.
GraphLang.graph ((x, y) :: xs) =
combin.UPDATE x (some y) (GraphLang.graph xs)
⊦ (∀k. GraphLang.odd_nums k 0 = []) ∧
∀k n.
GraphLang.odd_nums k (suc n) =
k :: GraphLang.odd_nums (k + arithmetic.BIT2 0) n
⊦ const = (λx y. x) ∧
(address.ALIGNED x ⇔ words.word_and x (words.n2w 3) = words.n2w 0) ∧
list.REV xs [] = reverse xs
⊦ GraphLang.IMPL_INST code names (GraphLang.Inst i (const ⊤) next) ∧
GraphLang.LIST_IMPL_INST code names xs ⇒
GraphLang.LIST_IMPL_INST code names
(GraphLang.Inst i (const ⊤) next :: xs)
⊦ ∀P.
P [] ∧
(∀name entry l xs. P xs ⇒ P (GraphLang.Func name entry l :: xs)) ⇒
∀fs. P fs
⊦ (∀a a'. GraphLang.ARM a = GraphLang.ARM a' ⇔ a = a') ∧
∀a a'. GraphLang.M0 a = GraphLang.M0 a' ⇔ a = a'
⊦ prog.SPEC arm_prog.ARM_MODEL
(set_sep.STAR (set_sep.STAR (aPC p) (aR (words.n2w 0) r0))
(set_sep.cond GraphLang.unspecified_pre)) pred_set.EMPTY
(set_sep.STAR (aR (words.n2w 0) bool.ARB)
(aPC (words.word_add p (words.n2w (arithmetic.BIT2 1)))))
⊦ list.EL (length xs + n) (reverse xs @ ys) = list.EL n ys ∧
list.EL (length xs) (reverse xs @ ys) = list.EL 0 ys
⊦ GraphLang.fs_locs [] = const none ∧
∀xs name l entry.
GraphLang.fs_locs (GraphLang.Func name entry l :: xs) =
combin.UPDATE name (some entry) (GraphLang.fs_locs xs)
⊦ (∀a f f1. GraphLang.code_CASE (GraphLang.ARM a) f f1 = f a) ∧
∀a f f1. GraphLang.code_CASE (GraphLang.M0 a) f f1 = f1 a
⊦ ∀nm st.
GraphLang.var_word8 nm st =
GraphLang.variable_CASE (GraphLang.var_acc nm st) (words.n2w 0)
(λv6. words.n2w 0) (λw. w) (λv8. words.n2w 0) (λv9. words.n2w 0)
(λv10. words.n2w 0) (λv11. words.n2w 0)
⊦ ∀nm st.
GraphLang.var_word32 nm st =
GraphLang.variable_CASE (GraphLang.var_acc nm st) (words.n2w 0)
(λv6. words.n2w 0) (λv7. words.n2w 0) (λw. w) (λv9. words.n2w 0)
(λv10. words.n2w 0) (λv11. words.n2w 0)
⊦ ∀a0 a1 a2 a3.
GraphLang.graph_function_size (GraphLang.GraphFunction a0 a1 a2 a3) =
1 +
(list.list_size (list.list_size string.char_size) a0 +
(list.list_size (list.list_size string.char_size) a1 + a3))
⊦ ∀n xs ys.
list.EL (length xs) (xs @ ys) = list.EL 0 ys ∧
list.EL (length xs + n) (xs @ ys) = list.EL n ys
⊦ ∀a x p c q.
(a ⇒ prog.SPEC x p c q) ⇒
∀d. pred_set.SUBSET c d ⇒ a ⇒ prog.SPEC x p d q
⊦ GraphLang.IMPL_INST c locs
(GraphLang.Inst n (const ⊤) (GraphLang.IF g next1 next2)) ⇒
∀a.
(∀s. a s ⇒ g s) ⇒ GraphLang.IMPL_INST c locs (GraphLang.Inst n a next1)
⊦ (∀s. GraphLang.apply_update [] s = s) ∧
∀y xs x s.
GraphLang.apply_update ((x, y) :: xs) s =
combin.UPDATE x (y s) (GraphLang.apply_update xs s)
⊦ prog.SPEC m (set_sep.STAR p (f x)) c (set_sep.STAR q (f x)) ⇔
∀v. v = x ⇒ prog.SPEC m (set_sep.STAR p (f v)) c (set_sep.STAR q (f v))
⊦ ∀a mem.
GraphLang.READ32 a mem =
GraphLang.word32 (mem (words.word_add a (words.n2w 3)))
(mem (words.word_add a (words.n2w (arithmetic.BIT2 0))))
(mem (words.word_add a (words.n2w 1))) (mem a)
⊦ (∀t. GraphLang.list_inst_trans t [] = []) ∧
∀t x xs.
GraphLang.list_inst_trans t (x :: xs) =
bool.LET (pair.UNCURRY (λt1 ys. ys @ GraphLang.list_inst_trans t1 xs))
(GraphLang.inst_trans t x)
⊦ snd (snd (words.add_with_carry (x, y, c))) ⇔
(words.word_msb x ⇔ words.word_msb y) ∧
¬(words.word_msb x ⇔
words.word_msb
(if c then words.word_sub x (words.word_1comp y)
else words.word_add x y))
⊦ (∀f s. GraphLang.fold f [] s = s) ∧
∀f x xs s. GraphLang.fold f (x :: xs) s = GraphLang.fold f xs (f x s)
⊦ ∀nm st.
GraphLang.var_mem nm st =
GraphLang.variable_CASE (GraphLang.var_acc nm st) (λv8. words.n2w 0)
(λv6 v8. words.n2w 0) (λv7 v8. words.n2w 0) (λv8 v8. words.n2w 0)
(λm. m) (λv10 v8. words.n2w 0) (λv11 v8. words.n2w 0)
⊦ ∀a0 a1 a2 a0' a1' a2'.
GraphLang.Func a0 a1 a2 = GraphLang.Func a0' a1' a2' ⇔
a0 = a0' ∧ a1 = a1' ∧ a2 = a2'
⊦ ∀a0 a1 a2 a0' a1' a2'.
GraphLang.Inst a0 a1 a2 = GraphLang.Inst a0' a1' a2' ⇔
a0 = a0' ∧ a1 = a1' ∧ a2 = a2'
⊦ GraphLang.IMPL_INST c locs
(GraphLang.Inst n (const ⊤) (GraphLang.IF g next1 next2)) ⇒
∀a.
(∀s. a s ⇒ ((¬) ∘ g) s) ⇒
GraphLang.IMPL_INST c locs (GraphLang.Inst n a next2)
⊦ ∀P.
(∀s. P [] s) ∧ (∀x y xs s. P xs s ⇒ P ((x, y) :: xs) s) ⇒ ∀v v1. P v v1
⊦ (b1 ⇒ prog.SPEC m p c1 q1) ∧ (b2 ⇒ prog.SPEC m p c2 q2) ⇒ (¬b1 ⇒ b2) ⇒
prog.SPEC m p (pred_set.UNION c1 c2) (if b1 then q1 else q2)
⊦ (x1 = x2 ⇒ t1 = t2) ∧ (y1 = y2 ⇒ u1 = u2) ⇒ (x1, y1) = (x2, y2) ⇒
(t1, u1) = (t2, u2)
⊦ GraphLang.funcs_ok (GraphLang.ARM code) fs ⇒
∀n s1 s2.
GraphLang.good_stack fs s1 ∧ GraphLang.good_stack fs s2 ∧
GraphLang.exec_graph_n (GraphLang.list_func_trans fs) n s1 s2 ⇒
prog.SPEC arm_prog.ARM_MODEL (GraphLang.arm_assert_for s1) code
(GraphLang.arm_assert_for s2)
⊦ GraphLang.funcs_ok (GraphLang.M0 code) fs ⇒
∀n s1 s2.
GraphLang.good_stack fs s1 ∧ GraphLang.good_stack fs s2 ∧
GraphLang.exec_graph_n (GraphLang.list_func_trans fs) n s1 s2 ⇒
prog.SPEC m0_prog.M0_MODEL (GraphLang.m0_assert_for s1) code
(GraphLang.m0_assert_for s2)
⊦ GraphLang.func_ok code locs f ⇒
∀c.
pair.pair_CASE (code, c)
(λv2 v3.
GraphLang.code_CASE v2
(λc1.
GraphLang.code_CASE v3 (λc2. pred_set.SUBSET c1 c2)
(λv11. ⊥))
(λc1'.
GraphLang.code_CASE v3 (λv14. ⊥)
(λc2'. pred_set.SUBSET c1' c2'))) ⇒
GraphLang.func_ok c locs f
⊦ GraphLang.IMPL_INST code locs (GraphLang.Inst pc1 assert1 next1) ∧
GraphLang.IMPL_INST code locs (GraphLang.Inst pc1 assert2 next2) ⇒
∀guard.
GraphLang.IMPL_INST code locs
(GraphLang.Inst pc1 (λs. if guard s then assert1 s else assert2 s)
(GraphLang.IF guard next1 next2))
⊦ ∀nn.
(∃n l. nn = GraphLang.Basic n l) ∨
(∃n n0 f. nn = GraphLang.Cond n n0 f) ∨
∃n s l l0. nn = GraphLang.Call n s l l0
⊦ GraphLang.IMPL_INST code locs (GraphLang.Inst pc1 assert1 next1) ∧
GraphLang.IMPL_INST code locs (GraphLang.Inst pc1 assert2 next2) ⇒
(∀s. assert1 s ⇒ assert2 s) ⇒
∀guard.
GraphLang.IMPL_INST code locs
(GraphLang.Inst pc1 assert1 (GraphLang.IF guard next1 next2))
⊦ (∀nn stf x xs.
GraphLang.upd_stack nn stf (x :: xs) =
(nn, stf (fst (snd x)), snd (snd x)) :: xs) ∧
∀nn stf. GraphLang.upd_stack nn stf [] = []
⊦ GraphLang.graph =
relation.WFREC
(select R'. wellFounded R' ∧ ∀y x xs. R' xs ((x, y) :: xs))
(λgraph a.
list.list_CASE a (id (const none))
(λv xs.
pair.pair_CASE v
(λx y. id (combin.UPDATE x (some y) (graph xs)))))
⊦ (∀n. GraphLang.find_func n [] = none) ∧
∀xs name n insts entry.
GraphLang.find_func n (GraphLang.Func name entry insts :: xs) =
if n = name then some (GraphLang.Func name entry insts)
else GraphLang.find_func n xs
⊦ (∀n. GraphLang.find_inst n [] = none) ∧
∀xs next n l asrt.
GraphLang.find_inst n (GraphLang.Inst l asrt next :: xs) =
if l = n then some (GraphLang.Inst l asrt next)
else GraphLang.find_inst n xs
⊦ ∀P.
(∀n l. P (GraphLang.Basic n l)) ∧
(∀n n0 f. P (GraphLang.Cond n n0 f)) ∧
(∀n s l l0. P (GraphLang.Call n s l l0)) ⇒ ∀nn. P nn
⊦ ∀M M' f.
M = M' ∧
(∀a0 a1 a2. M' = GraphLang.Func a0 a1 a2 ⇒ f a0 a1 a2 = f' a0 a1 a2) ⇒
GraphLang.func_CASE M f = GraphLang.func_CASE M' f'
⊦ ∀M M' f.
M = M' ∧
(∀a0 a1 a2. M' = GraphLang.Inst a0 a1 a2 ⇒ f a0 a1 a2 = f' a0 a1 a2) ⇒
GraphLang.inst_CASE M f = GraphLang.inst_CASE M' f'
⊦ ∀xs x n ys.
list.LUPDATE x (length xs) (xs @ ys) = xs @ list.LUPDATE x 0 ys ∧
list.LUPDATE x (length xs + n) (xs @ ys) = xs @ list.LUPDATE x n ys
⊦ ∀nn.
(∃f n n0. nn = GraphLang.IF f n n0) ∨
(∃o' l j. nn = GraphLang.ASM o' l j) ∨
∃o' l s j. nn = GraphLang.CALL o' l s j
⊦ ∀w.
address.ALIGNED w ⇒
arm.Align (w, arithmetic.BIT2 0) = w ∧
arm.Align (w, arithmetic.BIT2 1) = w ∧
m0.Align (w, arithmetic.BIT2 0) = w ∧
m0.Align (w, arithmetic.BIT2 1) = w
⊦ GraphLang.var_word32 n (GraphLang.apply_update ((x, y) :: xs) s) =
if n = x then
GraphLang.variable_CASE (y s) (words.n2w 0) (λv6. words.n2w 0)
(λv7. words.n2w 0) (λw. w) (λv9. words.n2w 0) (λv10. words.n2w 0)
(λv11. words.n2w 0)
else GraphLang.var_word32 n (GraphLang.apply_update xs s)
⊦ ∀P.
(∀n. P n []) ∧
(∀n name entry insts xs.
(¬(n = name) ⇒ P n xs) ⇒
P n (GraphLang.Func name entry insts :: xs)) ⇒ ∀v v1. P v v1
⊦ ∀P.
(∀n. P n []) ∧
(∀n l asrt next xs.
(¬(l = n) ⇒ P n xs) ⇒ P n (GraphLang.Inst l asrt next :: xs)) ⇒
∀v v1. P v v1
⊦ ∀a0 a1 a2 a3 a0' a1' a2' a3'.
GraphLang.GraphFunction a0 a1 a2 a3 =
GraphLang.GraphFunction a0' a1' a2' a3' ⇔
a0 = a0' ∧ a1 = a1' ∧ a2 = a2' ∧ a3 = a3'
⊦ GraphLang.fs_locs =
relation.WFREC
(select R'.
wellFounded R' ∧
∀l entry name xs. R' xs (GraphLang.Func name entry l :: xs))
(λfs_locs a.
list.list_CASE a (id (const none))
(λv xs.
GraphLang.func_CASE v
(λname entry l.
id (combin.UPDATE name (some entry) (fs_locs xs)))))
⊦ bitstring.v2w
(bitstring.field_insert 31 (arithmetic.BIT2 7)
(bitstring.field 15 0 (bitstring.w2v w)) (bitstring.w2v v)) =
words.bit_field_insert 31 (arithmetic.BIT2 7) w v
⊦ ∀M M' f v.
M = M' ∧ (∀a. M' = GraphLang.Jump a ⇒ f a = f' a) ∧
(M' = GraphLang.Return ⇒ v = v') ⇒
GraphLang.jump_CASE M f v = GraphLang.jump_CASE M' f' v'
⊦ (∀a f v v1.
GraphLang.next_node_CASE (GraphLang.NextNode a) f v v1 = f a) ∧
(∀f v v1. GraphLang.next_node_CASE GraphLang.Ret f v v1 = v) ∧
∀f v v1. GraphLang.next_node_CASE GraphLang.Err f v v1 = v1
⊦ ∀P.
P GraphLang.VarNone ∧ (∀a. P (GraphLang.VarNat a)) ∧
(∀a. P (GraphLang.VarWord8 a)) ∧ (∀a. P (GraphLang.VarWord32 a)) ∧
(∀a. P (GraphLang.VarMem a)) ∧ (∀a. P (GraphLang.VarDom a)) ∧
(∀a. P (GraphLang.VarBool a)) ⇒ ∀x. P x
⊦ ∀M M' f.
M = M' ∧
(∀a0 a1 a2 a3.
M' = GraphLang.GraphFunction a0 a1 a2 a3 ⇒
f a0 a1 a2 a3 = f' a0 a1 a2 a3) ⇒
GraphLang.graph_function_CASE M f = GraphLang.graph_function_CASE M' f'
⊦ ∀P.
(∀code names. P code names []) ∧
(∀code names i assert next xs.
P code names xs ⇒
P code names (GraphLang.Inst i assert next :: xs)) ⇒
∀v v1 v2. P v v1 v2
⊦ (words.word_sub a
(words.word_mul (words.n2w (l + n)) (words.n2w (arithmetic.BIT2 1))) =
words.word_sub r13
(words.word_mul (words.n2w (arithmetic.BIT2 1)) (words.n2w l)) ⇒ b) ⇒
address.ALIGNED a ∧ address.ALIGNED r13 ∧
n = words.w2n (words.word_sub a r13) div arithmetic.BIT2 1 ⇒ b
⊦ ∀x.
x = GraphLang.VarNone ∨ (∃n. x = GraphLang.VarNat n) ∨
(∃c. x = GraphLang.VarWord8 c) ∨ (∃c. x = GraphLang.VarWord32 c) ∨
(∃f. x = GraphLang.VarMem f) ∨ (∃f. x = GraphLang.VarDom f) ∨
∃b. x = GraphLang.VarBool b
⊦ ∀M M' f f1.
M = M' ∧ (∀a. M' = GraphLang.ARM a ⇒ f a = f' a) ∧
(∀a. M' = GraphLang.M0 a ⇒ f1 a = f1' a) ⇒
GraphLang.code_CASE M f f1 = GraphLang.code_CASE M' f' f1'
⊦ GraphLang.IMPL_INST c locs
(GraphLang.Inst n b
(GraphLang.IF g (GraphLang.ASM x u (GraphLang.Jump j)) next)) ⇔
GraphLang.IMPL_INST c locs
(GraphLang.Inst n (λs. b s ∧ g s)
(GraphLang.ASM x u (GraphLang.Jump j))) ∧
GraphLang.IMPL_INST c locs (GraphLang.Inst n (λs. b s ∧ ¬g s) next)
⊦ ∀P.
(∀n n0. P n ∧ P n0 ⇒ ∀f. P (GraphLang.IF f n n0)) ∧
(∀o' l j. P (GraphLang.ASM o' l j)) ∧
(∀o' l s j. P (GraphLang.CALL o' l s j)) ⇒ ∀n. P n
⊦ (address.ALIGNED (arm.Align (w, arithmetic.BIT2 0)) ⇔
¬fcp.fcp_index w 1) ∧
(address.ALIGNED (arm.Align (w, arithmetic.BIT2 1)) ⇔ ⊤) ∧
(address.ALIGNED (m0.Align (w, arithmetic.BIT2 0)) ⇔
¬fcp.fcp_index w 1) ∧
(address.ALIGNED (m0.Align (w, arithmetic.BIT2 1)) ⇔ ⊤)
⊦ (∀k. GraphLang.odd_nums k 0 = []) ∧
(∀k n.
GraphLang.odd_nums k (bit1 n) =
k ::
GraphLang.odd_nums (k + arithmetic.BIT2 0)
(arithmetic.- (bit1 n) 1)) ∧
∀k n.
GraphLang.odd_nums k (arithmetic.BIT2 n) =
k :: GraphLang.odd_nums (k + arithmetic.BIT2 0) (bit1 n)
⊦ (∀names code. GraphLang.LIST_IMPL_INST code names [] ⇔ ⊤) ∧
∀xs next names i code assert.
GraphLang.LIST_IMPL_INST code names
(GraphLang.Inst i assert next :: xs) ⇔
GraphLang.IMPL_INST code names (GraphLang.Inst i assert next) ∧
assert = const ⊤ ∧ GraphLang.LIST_IMPL_INST code names xs
⊦ GraphLang.IMPL_INST code locs
(GraphLang.Inst pc assert
(GraphLang.IF guard (GraphLang.ASM (some s1) up1 j1)
(GraphLang.ASM (some s2) up2 j2))) ⇔
GraphLang.IMPL_INST code locs
(GraphLang.Inst pc assert
(GraphLang.IF guard
(GraphLang.ASM (some (λs. guard s ⇒ s1 s)) up1 j1)
(GraphLang.ASM (some (λs. ¬guard s ⇒ s2 s)) up2 j2)))
⊦ ∀code names name entry l.
GraphLang.func_ok code names (GraphLang.Func name entry l) ⇔
list.ALL_DISTINCT (map GraphLang.inst_loc l) ∧ even (words.w2n entry) ∧
∀i assert next.
bool.IN (GraphLang.Inst i assert next) (list.LIST_TO_SET l) ⇒
GraphLang.IMPL_INST code names (GraphLang.Inst i assert next) ∧
assert = const ⊤
⊦ GraphLang.IMPL_INST c locs
(GraphLang.Inst n b
(GraphLang.IF g (GraphLang.ASM pre u1 (GraphLang.Jump w)) next)) ∧
GraphLang.IMPL_INST c locs
(GraphLang.Inst w g (GraphLang.ASM none [] (GraphLang.Jump j))) ⇒
(∀s. g s ⇒ g (GraphLang.apply_update u1 s)) ⇒
GraphLang.IMPL_INST c locs
(GraphLang.Inst n b
(GraphLang.IF g (GraphLang.ASM pre u1 (GraphLang.Jump j)) next))
⊦ ∀M M' f v v1.
M = M' ∧ (∀a. M' = GraphLang.NextNode a ⇒ f a = f' a) ∧
(M' = GraphLang.Ret ⇒ v = v') ∧ (M' = GraphLang.Err ⇒ v1 = v1') ⇒
GraphLang.next_node_CASE M f v v1 =
GraphLang.next_node_CASE M' f' v' v1'
⊦ ∀f0 f1 f2.
∃fn.
(∀a0 a1. fn (GraphLang.Basic a0 a1) = f0 a0 a1) ∧
(∀a0 a1 a2. fn (GraphLang.Cond a0 a1 a2) = f1 a0 a1 a2) ∧
∀a0 a1 a2 a3. fn (GraphLang.Call a0 a1 a2 a3) = f2 a0 a1 a2 a3
⊦ GraphLang.IMPL_INST c locs
(GraphLang.Inst n b
(GraphLang.IF g next (GraphLang.ASM pre u1 (GraphLang.Jump w)))) ∧
GraphLang.IMPL_INST c locs
(GraphLang.Inst w ((¬) ∘ g)
(GraphLang.ASM none [] (GraphLang.Jump j))) ⇒
(∀s. g (GraphLang.apply_update u1 s) ⇔ g s) ⇒
GraphLang.IMPL_INST c locs
(GraphLang.Inst n b
(GraphLang.IF g next (GraphLang.ASM pre u1 (GraphLang.Jump j))))
⊦ (∀p s w. GraphLang.check_jump (GraphLang.Jump p) s w ⇔ w = p) ∧
∀s w.
GraphLang.check_jump GraphLang.Return s w ⇔
GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) :: [])
s = w
⊦ ∀a w mem.
GraphLang.WRITE32 a w mem =
combin.UPDATE a (words.w2w w)
(combin.UPDATE (words.word_add a (words.n2w 1))
(words.w2w (words.word_lsr w (arithmetic.BIT2 3)))
(combin.UPDATE (words.word_add a (words.n2w (arithmetic.BIT2 0)))
(words.w2w (words.word_lsr w (arithmetic.BIT2 7)))
(combin.UPDATE (words.word_add a (words.n2w 3))
(words.w2w
(words.word_lsr w
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))))
mem)))
⊦ (GraphLang.IMPL_INST code locs
(GraphLang.Inst pc assert
(GraphLang.IF guard (GraphLang.ASM (some (λx. ⊤)) up1 j1) next)) ⇔
GraphLang.IMPL_INST code locs
(GraphLang.Inst pc assert
(GraphLang.IF guard (GraphLang.ASM none up1 j1) next))) ∧
(GraphLang.IMPL_INST code locs
(GraphLang.Inst pc assert
(GraphLang.IF guard next (GraphLang.ASM (some (λx. ⊤)) up1 j1))) ⇔
GraphLang.IMPL_INST code locs
(GraphLang.Inst pc assert
(GraphLang.IF guard next (GraphLang.ASM none up1 j1))))
⊦ GraphLang.find_func_tupled =
relation.WFREC
(select R'.
wellFounded R' ∧
∀insts entry xs name n.
¬(n = name) ⇒
R' (n, xs) (n, GraphLang.Func name entry insts :: xs))
(λfind_func_tupled a.
pair.pair_CASE a
(λn v1.
list.list_CASE v1 (id none)
(λv2 xs.
GraphLang.func_CASE v2
(λname entry insts.
id
(if n = name then
some (GraphLang.Func name entry insts)
else find_func_tupled (n, xs))))))
⊦ GraphLang.find_inst_tupled =
relation.WFREC
(select R'.
wellFounded R' ∧
∀next asrt xs n l.
¬(l = n) ⇒ R' (n, xs) (n, GraphLang.Inst l asrt next :: xs))
(λfind_inst_tupled a.
pair.pair_CASE a
(λn v1.
list.list_CASE v1 (id none)
(λv2 xs.
GraphLang.inst_CASE v2
(λl asrt next.
id
(if l = n then some (GraphLang.Inst l asrt next)
else find_inst_tupled (n, xs))))))
⊦ ∀f0 f1 f2.
∃fn.
(∀a0 a1 a2.
fn (GraphLang.IF a0 a1 a2) = f0 a0 a1 a2 (fn a1) (fn a2)) ∧
(∀a0 a1 a2. fn (GraphLang.ASM a0 a1 a2) = f1 a0 a1 a2) ∧
∀a0 a1 a2 a3. fn (GraphLang.CALL a0 a1 a2 a3) = f2 a0 a1 a2 a3
⊦ (∀a2 a1' a1 a0' a0.
¬(GraphLang.Basic a0 a1 = GraphLang.Cond a0' a1' a2)) ∧
(∀a3 a2 a1' a1 a0' a0.
¬(GraphLang.Basic a0 a1 = GraphLang.Call a0' a1' a2 a3)) ∧
∀a3 a2' a2 a1' a1 a0' a0.
¬(GraphLang.Cond a0 a1 a2 = GraphLang.Call a0' a1' a2' a3)
⊦ ∀s.
GraphLang.arm_STATE_CPSR s =
set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(arm_prog.arm_CPSR_N
(GraphLang.var_bool
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: []) s))
(arm_prog.arm_CPSR_Z
(GraphLang.var_bool
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) :: []) s)))
(arm_prog.arm_CPSR_C
(GraphLang.var_bool
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) :: []) s)))
(arm_prog.arm_CPSR_V
(GraphLang.var_bool
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
[]) s))
⊦ ∀s.
GraphLang.m0_STATE_PSR s =
set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(m0_prog.m0_PSR_N
(GraphLang.var_bool
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: []) s))
(m0_prog.m0_PSR_Z
(GraphLang.var_bool
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) :: []) s)))
(m0_prog.m0_PSR_C
(GraphLang.var_bool
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) :: []) s)))
(m0_prog.m0_PSR_V
(GraphLang.var_bool
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
[]) s))
⊦ ∀P.
(∀fs. P fs []) ∧ (∀fs x. P fs (x :: [])) ∧
(∀fs l1 s1 n1 l2 s2 n2 xs.
P fs ((l2, s2, n2) :: xs) ⇒
P fs ((l1, s1, n1) :: (l2, s2, n2) :: xs)) ⇒ ∀v v1. P v v1
⊦ GraphLang.variable_size GraphLang.VarNone = 0 ∧
(∀a. GraphLang.variable_size (GraphLang.VarNat a) = 1 + a) ∧
(∀a. GraphLang.variable_size (GraphLang.VarWord8 a) = 1) ∧
(∀a. GraphLang.variable_size (GraphLang.VarWord32 a) = 1) ∧
(∀a. GraphLang.variable_size (GraphLang.VarMem a) = 1) ∧
(∀a. GraphLang.variable_size (GraphLang.VarDom a) = 1) ∧
∀a.
GraphLang.variable_size (GraphLang.VarBool a) =
1 + basicSize.bool_size a
⊦ (∀s u l.
GraphLang.next_ok (GraphLang.ASM s u l) ⇔
GraphLang.upd_ok u ∧ GraphLang.jump_ok l) ∧
(∀b n1 n2.
GraphLang.next_ok (GraphLang.IF b n1 n2) ⇔
GraphLang.next_ok n1 ∧ GraphLang.next_ok n2) ∧
∀a u n j.
GraphLang.next_ok (GraphLang.CALL a u n j) ⇔
map fst u = GraphLang.ret_and_all_names ∧ GraphLang.jump_ok j ∧
∀st. GraphLang.check_ret j st (GraphLang.apply_update u st)
⊦ (∀a2' a2 a1' a1 a0' a0.
¬(GraphLang.IF a0 a1 a2 = GraphLang.ASM a0' a1' a2')) ∧
(∀a3 a2' a2 a1' a1 a0' a0.
¬(GraphLang.IF a0 a1 a2 = GraphLang.CALL a0' a1' a2' a3)) ∧
∀a3 a2' a2 a1' a1 a0' a0.
¬(GraphLang.ASM a0 a1 a2 = GraphLang.CALL a0' a1' a2' a3)
⊦ s
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) :: []) =
GraphLang.VarWord32 w ⇒
w =
GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) :: []) s
⊦ ∀f0 f1 f2 f3 f4 f5 f6.
∃fn.
fn GraphLang.VarNone = f0 ∧ (∀a. fn (GraphLang.VarNat a) = f1 a) ∧
(∀a. fn (GraphLang.VarWord8 a) = f2 a) ∧
(∀a. fn (GraphLang.VarWord32 a) = f3 a) ∧
(∀a. fn (GraphLang.VarMem a) = f4 a) ∧
(∀a. fn (GraphLang.VarDom a) = f5 a) ∧
∀a. fn (GraphLang.VarBool a) = f6 a
⊦ GraphLang.LIST_IMPL_INST_tupled =
relation.WFREC
(select R'.
wellFounded R' ∧
∀next assert i xs names code.
R' (code, names, xs)
(code, names, GraphLang.Inst i assert next :: xs))
(λLIST_IMPL_INST_tupled a.
pair.pair_CASE a
(λcode v1.
pair.pair_CASE v1
(λnames v3.
list.list_CASE v3 (id ⊤)
(λv4 xs.
GraphLang.inst_CASE v4
(λi assert next.
id
(GraphLang.IMPL_INST code names
(GraphLang.Inst i assert next) ∧
assert = const ⊤ ∧
LIST_IMPL_INST_tupled (code, names, xs)))))))
⊦ (∀a0 a1 f f1 f2.
GraphLang.node_CASE (GraphLang.Basic a0 a1) f f1 f2 = f a0 a1) ∧
(∀a0 a1 a2 f f1 f2.
GraphLang.node_CASE (GraphLang.Cond a0 a1 a2) f f1 f2 = f1 a0 a1 a2) ∧
∀a0 a1 a2 a3 f f1 f2.
GraphLang.node_CASE (GraphLang.Call a0 a1 a2 a3) f f1 f2 =
f2 a0 a1 a2 a3
⊦ ∀code locs n assert next.
GraphLang.IMPL_INST code locs (GraphLang.Inst n assert next) ⇔
GraphLang.next_ok next ∧ even (words.w2n n) ∧
∀s t call w.
assert s ∧ GraphLang.exec_next locs next s t w call ⇒
GraphLang.code_CASE code
(λarm_c.
prog.SPEC arm_prog.ARM_MODEL
(set_sep.STAR (GraphLang.arm_STATE s) (arm_prog.arm_PC n))
arm_c
(set_sep.STAR (GraphLang.arm_STATE t) (arm_prog.arm_PC w)))
(λm0_c.
prog.SPEC m0_prog.M0_MODEL
(set_sep.STAR (GraphLang.m0_STATE s) (m0_prog.m0_PC n)) m0_c
(set_sep.STAR (GraphLang.m0_STATE t) (m0_prog.m0_PC w)))
⊦ (∀a0 a1 a2 f f1 f2.
GraphLang.next_CASE (GraphLang.IF a0 a1 a2) f f1 f2 = f a0 a1 a2) ∧
(∀a0 a1 a2 f f1 f2.
GraphLang.next_CASE (GraphLang.ASM a0 a1 a2) f f1 f2 = f1 a0 a1 a2) ∧
∀a0 a1 a2 a3 f f1 f2.
GraphLang.next_CASE (GraphLang.CALL a0 a1 a2 a3) f f1 f2 =
f2 a0 a1 a2 a3
⊦ (∀a0 a1.
GraphLang.node_size (GraphLang.Basic a0 a1) =
1 +
(GraphLang.next_node_size a0 +
list.list_size
(basicSize.pair_size (list.list_size string.char_size) (λv. 0))
a1)) ∧
(∀a0 a1 a2.
GraphLang.node_size (GraphLang.Cond a0 a1 a2) =
1 + (GraphLang.next_node_size a0 + GraphLang.next_node_size a1)) ∧
∀a0 a1 a2 a3.
GraphLang.node_size (GraphLang.Call a0 a1 a2 a3) =
1 +
(GraphLang.next_node_size a0 +
(list.list_size string.char_size a1 +
(list.list_size (λv. 0) a2 +
list.list_size (list.list_size string.char_size) a3)))
⊦ (∀v0 v1 v2 v3 stack.
GraphLang.exec_node_return v0 v1 (GraphLang.Basic v2 v3) stack =
pred_set.EMPTY) ∧
(∀v4 v5 v6 v7 v8 stack.
GraphLang.exec_node_return v4 v5 (GraphLang.Cond v6 v7 v8) stack =
pred_set.EMPTY) ∧
∀Gamma st cont fname inputs outputs stack.
GraphLang.exec_node_return Gamma st
(GraphLang.Call cont fname inputs outputs) stack =
option.option_CASE (Gamma fname) pred_set.EMPTY
(λv.
GraphLang.graph_function_CASE v
(λinps outps graph ep.
pred_set.INSERT
(GraphLang.upd_stack cont
(GraphLang.return_vars outps outputs st) stack)
pred_set.EMPTY))
⊦ (∀a a'. GraphLang.VarNat a = GraphLang.VarNat a' ⇔ a = a') ∧
(∀a a'. GraphLang.VarWord8 a = GraphLang.VarWord8 a' ⇔ a = a') ∧
(∀a a'. GraphLang.VarWord32 a = GraphLang.VarWord32 a' ⇔ a = a') ∧
(∀a a'. GraphLang.VarMem a = GraphLang.VarMem a' ⇔ a = a') ∧
(∀a a'. GraphLang.VarDom a = GraphLang.VarDom a' ⇔ a = a') ∧
∀a a'. GraphLang.VarBool a = GraphLang.VarBool a' ⇔ a ⇔ a'
⊦ GraphLang.next_trans_tupled =
GraphLang.next_trans_tupled_aux
(select R'.
wellFounded R' ∧
(∀guard n n2 n1 t t1 xs.
(t1, xs) =
GraphLang.next_trans_tupled_aux R'
(t, t + arithmetic.BIT2 1, n1) ⇒
R' (t + arithmetic.BIT2 0, t1, n2)
(n, t, GraphLang.IF guard n1 n2)) ∧
∀n2 guard n n1 t.
R' (t, t + arithmetic.BIT2 1, n1)
(n, t, GraphLang.IF guard n1 n2))
⊦ GraphLang.all_names_with_input =
GraphLang.all_names @
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR (arithmetic.BIT2 (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR (bit1 (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) :: []) :: []
⊦ (∀a0 a1 a2.
GraphLang.next_size (GraphLang.IF a0 a1 a2) =
1 + (GraphLang.next_size a1 + GraphLang.next_size a2)) ∧
(∀a0 a1 a2.
GraphLang.next_size (GraphLang.ASM a0 a1 a2) =
1 +
(basicSize.option_size (λv. 0) a0 +
(list.list_size
(basicSize.pair_size (list.list_size string.char_size) (λv. 0))
a1 + GraphLang.jump_size a2))) ∧
∀a0 a1 a2 a3.
GraphLang.next_size (GraphLang.CALL a0 a1 a2 a3) =
1 +
(basicSize.option_size (λv. 0) a0 +
(list.list_size
(basicSize.pair_size (list.list_size string.char_size) (λv. 0))
a1 +
(list.list_size string.char_size a2 + GraphLang.jump_size a3)))
⊦ GraphLang.arm_assert_for [] = set_sep.SEP_F ∧
GraphLang.arm_assert_for ((loc, state, name) :: rest) =
set_sep.STAR (GraphLang.arm_STATE state)
(arm_prog.arm_PC
(GraphLang.next_node_CASE loc (λn. words.n2w n)
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
[]) state)
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
[]) state)))
⊦ GraphLang.m0_assert_for [] = set_sep.SEP_F ∧
GraphLang.m0_assert_for ((loc, state, name) :: rest) =
set_sep.STAR (GraphLang.m0_STATE state)
(m0_prog.m0_PC
(GraphLang.next_node_CASE loc (λn. words.n2w n)
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
[]) state)
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
[]) state)))
⊦ ∀M M' f f1 f2.
M = M' ∧ (∀a0 a1. M' = GraphLang.Basic a0 a1 ⇒ f a0 a1 = f' a0 a1) ∧
(∀a0 a1 a2.
M' = GraphLang.Cond a0 a1 a2 ⇒ f1 a0 a1 a2 = f1' a0 a1 a2) ∧
(∀a0 a1 a2 a3.
M' = GraphLang.Call a0 a1 a2 a3 ⇒
f2 a0 a1 a2 a3 = f2' a0 a1 a2 a3) ⇒
GraphLang.node_CASE M f f1 f2 = GraphLang.node_CASE M' f' f1' f2'
⊦ GraphLang.arm_assert_for =
relation.WFREC (select R'. wellFounded R')
(λarm_assert_for a.
list.list_CASE a (id set_sep.SEP_F)
(λv rest.
pair.pair_CASE v
(λloc v3.
pair.pair_CASE v3
(λstate name.
id
(set_sep.STAR (GraphLang.arm_STATE state)
(arm_prog.arm_PC
(GraphLang.next_node_CASE loc
(λn. words.n2w n)
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) :: [])
state)
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) :: [])
state))))))))
⊦ GraphLang.m0_assert_for =
relation.WFREC (select R'. wellFounded R')
(λm0_assert_for a.
list.list_CASE a (id set_sep.SEP_F)
(λv rest.
pair.pair_CASE v
(λloc v3.
pair.pair_CASE v3
(λstate name.
id
(set_sep.STAR (GraphLang.m0_STATE state)
(m0_prog.m0_PC
(GraphLang.next_node_CASE loc
(λn. words.n2w n)
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) :: [])
state)
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) :: [])
state))))))))
⊦ ∀M M' f f1 f2.
M = M' ∧
(∀a0 a1 a2. M' = GraphLang.IF a0 a1 a2 ⇒ f a0 a1 a2 = f' a0 a1 a2) ∧
(∀a0 a1 a2. M' = GraphLang.ASM a0 a1 a2 ⇒ f1 a0 a1 a2 = f1' a0 a1 a2) ∧
(∀a0 a1 a2 a3.
M' = GraphLang.CALL a0 a1 a2 a3 ⇒
f2 a0 a1 a2 a3 = f2' a0 a1 a2 a3) ⇒
GraphLang.next_CASE M f f1 f2 = GraphLang.next_CASE M' f' f1' f2'
⊦ (∀a0 a1 a0' a1'.
GraphLang.Basic a0 a1 = GraphLang.Basic a0' a1' ⇔
a0 = a0' ∧ a1 = a1') ∧
(∀a0 a1 a2 a0' a1' a2'.
GraphLang.Cond a0 a1 a2 = GraphLang.Cond a0' a1' a2' ⇔
a0 = a0' ∧ a1 = a1' ∧ a2 = a2') ∧
∀a0 a1 a2 a3 a0' a1' a2' a3'.
GraphLang.Call a0 a1 a2 a3 = GraphLang.Call a0' a1' a2' a3' ⇔
a0 = a0' ∧ a1 = a1' ∧ a2 = a2' ∧ a3 = a3'
⊦ (∀a0 a1 a2 a0' a1' a2'.
GraphLang.IF a0 a1 a2 = GraphLang.IF a0' a1' a2' ⇔
a0 = a0' ∧ a1 = a1' ∧ a2 = a2') ∧
(∀a0 a1 a2 a0' a1' a2'.
GraphLang.ASM a0 a1 a2 = GraphLang.ASM a0' a1' a2' ⇔
a0 = a0' ∧ a1 = a1' ∧ a2 = a2') ∧
∀a0 a1 a2 a3 a0' a1' a2' a3'.
GraphLang.CALL a0 a1 a2 a3 = GraphLang.CALL a0' a1' a2' a3' ⇔
a0 = a0' ∧ a1 = a1' ∧ a2 = a2' ∧ a3 = a3'
⊦ (∀Gamma st cont upds stack.
GraphLang.exec_node Gamma st (GraphLang.Basic cont upds) stack =
pred_set.INSERT
(GraphLang.upd_stack cont (const (GraphLang.upd_vars upds st))
stack) pred_set.EMPTY) ∧
(∀Gamma st left right cond stack.
GraphLang.exec_node Gamma st (GraphLang.Cond left right cond) stack =
pred_set.INSERT
(GraphLang.upd_stack (if cond st then left else right) id stack)
pred_set.EMPTY) ∧
∀Gamma st cont fname inputs outputs stack.
GraphLang.exec_node Gamma st (GraphLang.Call cont fname inputs outputs)
stack =
option.option_CASE (Gamma fname)
(pred_set.INSERT (GraphLang.upd_stack GraphLang.Err id stack)
pred_set.EMPTY)
(λv.
GraphLang.graph_function_CASE v
(λinps outps graph1 ep.
pred_set.INSERT
((GraphLang.NextNode ep,
GraphLang.init_vars inps inputs st, fname) :: stack)
pred_set.EMPTY))
⊦ ∀P.
(∀n t upd jump. P n t (GraphLang.ASM none upd jump)) ∧
(∀n t a upd jump. P n t (GraphLang.ASM (some a) upd jump)) ∧
(∀n t guard n1 n2.
(∀t1 xs.
(t1, xs) = GraphLang.next_trans t (t + arithmetic.BIT2 1) n1 ⇒
P (t + arithmetic.BIT2 0) t1 n2) ∧
P t (t + arithmetic.BIT2 1) n1 ⇒ P n t (GraphLang.IF guard n1 n2)) ∧
(∀n t a upd name r. P n t (GraphLang.CALL a upd name r)) ⇒
∀v v1 v2. P v v1 v2
⊦ GraphLang.ret_and_all_names =
((string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) :: []) ::
GraphLang.all_names) @
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR (arithmetic.BIT2 (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR (bit1 (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) :: []) :: []
⊦ triple.TRIPLE (straightline.arm_assert, arm_prog.ARM_MODEL)
(pre, p, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13,
r14, n, z, c, v, mode, dmem, memory, dom_stack, stack) code
(pre, p, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13,
r14, n, z, c, v, mode, dmem, memory, dom_stack, stack)
⊦ ∀Gamma stack stack'.
GraphLang.exec_graph_step Gamma stack stack' ⇔
list.list_CASE stack ⊥
(λv2 v3.
pair.pair_CASE v2
(λv8 v9.
pair.pair_CASE v9
(λst fname.
GraphLang.next_node_CASE v8
(λnn.
option.option_CASE (Gamma fname) ⊥
(λv.
GraphLang.graph_function_CASE v
(λv1 v2 graph v4.
option.option_CASE (graph nn)
(stack' =
GraphLang.upd_stack GraphLang.Err id
stack)
(λnode.
bool.IN stack'
(GraphLang.exec_node Gamma st node
stack)))))
(list.list_CASE v3 ⊥
(λv21 v22.
pair.pair_CASE v21
(λv25 v26.
pair.pair_CASE v26
(λv29 fname'.
GraphLang.next_node_CASE v25
(λnn'.
option.option_CASE (Gamma fname')
⊥
(λv.
GraphLang.graph_function_CASE
v
(λv1 v2 graph v4.
option.option_CASE
(graph nn')
(stack' =
GraphLang.upd_stack
GraphLang.Err id
stack)
(λnode.
bool.IN stack'
(GraphLang.exec_node_return
Gamma st node
(tail
stack))))))
(stack' =
GraphLang.upd_stack GraphLang.Err
id (tail stack))
(stack' =
GraphLang.upd_stack GraphLang.Err
id (tail stack))))))
(list.list_CASE v3 ⊥
(λv35 v36.
stack' =
GraphLang.upd_stack GraphLang.Err id
(tail stack))))))
⊦ (∀p s t.
GraphLang.check_ret (GraphLang.Jump p) s t ⇔
GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) :: [])
t = p) ∧
∀s t.
GraphLang.check_ret GraphLang.Return s t ⇔
GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) :: [])
t =
GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) :: []) s
⊦ words.word_extract 7 0 w = words.w2w w ∧
words.word_extract 15 (arithmetic.BIT2 3) w =
words.w2w (words.word_lsr w (arithmetic.BIT2 3)) ∧
words.word_extract (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))
(arithmetic.BIT2 7) w =
words.w2w (words.word_lsr w (arithmetic.BIT2 7)) ∧
words.word_extract 31 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))
w =
words.w2w
(words.word_lsr w
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_extract 31 0 v = words.w2w v ∧
words.word_extract 63 (arithmetic.BIT2 15) v =
words.w2w (words.word_lsr v (arithmetic.BIT2 15))
⊦ ∀M M' v f f1 f2 f3 f4 f5.
M = M' ∧ (M' = GraphLang.VarNone ⇒ v = v') ∧
(∀a. M' = GraphLang.VarNat a ⇒ f a = f' a) ∧
(∀a. M' = GraphLang.VarWord8 a ⇒ f1 a = f1' a) ∧
(∀a. M' = GraphLang.VarWord32 a ⇒ f2 a = f2' a) ∧
(∀a. M' = GraphLang.VarMem a ⇒ f3 a = f3' a) ∧
(∀a. M' = GraphLang.VarDom a ⇒ f4 a = f4' a) ∧
(∀a. M' = GraphLang.VarBool a ⇒ f5 a = f5' a) ⇒
GraphLang.variable_CASE M v f f1 f2 f3 f4 f5 =
GraphLang.variable_CASE M' v' f' f1' f2' f3' f4' f5'
⊦ ∀R'.
GraphLang.next_trans_tupled_aux R' =
relation.WFREC R'
(λnext_trans_tupled a'.
pair.pair_CASE a'
(λn v1.
pair.pair_CASE v1
(λt v3.
GraphLang.next_CASE v3
(λguard n1 n2.
id
(bool.LET
(pair.UNCURRY
(λt1 xs.
bool.LET
(pair.UNCURRY
(λt2 ys.
(t2,
(((n,
GraphLang.Cond
(GraphLang.NextNode t)
(GraphLang.NextNode
(t +
arithmetic.BIT2 0))
guard) :: []) @ xs) @
ys)))
(next_trans_tupled
(t + arithmetic.BIT2 0, t1, n2))))
(next_trans_tupled
(t, t + arithmetic.BIT2 1, n1))))
(λv7 upd jump.
option.option_CASE v7
(id
(t,
(n,
GraphLang.Basic (GraphLang.get_jump jump)
upd) :: []))
(λa.
id
(t + arithmetic.BIT2 0,
(n,
GraphLang.Cond (GraphLang.NextNode t)
GraphLang.Err a) ::
(t,
GraphLang.Basic (GraphLang.get_jump jump)
upd) :: [])))
(λa'' upd' name r.
id
(t + arithmetic.BIT2 0,
(n,
GraphLang.Cond (GraphLang.NextNode t)
GraphLang.Err (GraphLang.get_assert a'')) ::
(t,
GraphLang.Call (GraphLang.get_jump r) name
(map snd upd') GraphLang.all_names_ignore) ::
[])))))
⊦ GraphLang.all_names_ignore =
GraphLang.all_names @
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR (arithmetic.BIT2 (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR (bit1 (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR (bit1 (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (bit1 (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) :: []) ::
[]
⊦ (∀locs guard n1 n2 s t w call.
GraphLang.exec_next locs (GraphLang.IF guard n1 n2) s t w call ⇔
if guard s then GraphLang.exec_next locs n1 s t w call
else GraphLang.exec_next locs n2 s t w call) ∧
(∀locs assert update jmp s t w call.
GraphLang.exec_next locs (GraphLang.ASM assert update jmp) s t w
call ⇔
GraphLang.get_assert assert s ∧ GraphLang.apply_update update s = t ∧
GraphLang.check_jump jmp t w ∧ call = none) ∧
∀locs assert update name jmp s t w call.
GraphLang.exec_next locs (GraphLang.CALL assert update name jmp) s t w
call ⇔
GraphLang.get_assert assert s ∧ GraphLang.apply_update update s = t ∧
¬(locs name = none) ∧
GraphLang.check_jump (GraphLang.Jump (option.THE (locs name))) t w ∧
GraphLang.check_ret jmp s t ∧ call = some name
⊦ (∀upd t n jump.
GraphLang.next_trans n t (GraphLang.ASM none upd jump) =
(t, (n, GraphLang.Basic (GraphLang.get_jump jump) upd) :: [])) ∧
(∀upd t n jump a.
GraphLang.next_trans n t (GraphLang.ASM (some a) upd jump) =
(t + arithmetic.BIT2 0,
(n, GraphLang.Cond (GraphLang.NextNode t) GraphLang.Err a) ::
(t, GraphLang.Basic (GraphLang.get_jump jump) upd) :: [])) ∧
(∀t n2 n1 n guard.
GraphLang.next_trans n t (GraphLang.IF guard n1 n2) =
bool.LET
(pair.UNCURRY
(λt1 xs.
bool.LET
(pair.UNCURRY
(λt2 ys.
(t2,
(((n,
GraphLang.Cond (GraphLang.NextNode t)
(GraphLang.NextNode (t + arithmetic.BIT2 0))
guard) :: []) @ xs) @ ys)))
(GraphLang.next_trans (t + arithmetic.BIT2 0) t1 n2)))
(GraphLang.next_trans t (t + arithmetic.BIT2 1) n1)) ∧
∀upd t r name n a.
GraphLang.next_trans n t (GraphLang.CALL a upd name r) =
(t + arithmetic.BIT2 0,
(n,
GraphLang.Cond (GraphLang.NextNode t) GraphLang.Err
(GraphLang.get_assert a)) ::
(t,
GraphLang.Call (GraphLang.get_jump r) name (map snd upd)
GraphLang.all_names_ignore) :: [])
⊦ (∀v f f1 f2 f3 f4 f5.
GraphLang.variable_CASE GraphLang.VarNone v f f1 f2 f3 f4 f5 = v) ∧
(∀a v f f1 f2 f3 f4 f5.
GraphLang.variable_CASE (GraphLang.VarNat a) v f f1 f2 f3 f4 f5 =
f a) ∧
(∀a v f f1 f2 f3 f4 f5.
GraphLang.variable_CASE (GraphLang.VarWord8 a) v f f1 f2 f3 f4 f5 =
f1 a) ∧
(∀a v f f1 f2 f3 f4 f5.
GraphLang.variable_CASE (GraphLang.VarWord32 a) v f f1 f2 f3 f4 f5 =
f2 a) ∧
(∀a v f f1 f2 f3 f4 f5.
GraphLang.variable_CASE (GraphLang.VarMem a) v f f1 f2 f3 f4 f5 =
f3 a) ∧
(∀a v f f1 f2 f3 f4 f5.
GraphLang.variable_CASE (GraphLang.VarDom a) v f f1 f2 f3 f4 f5 =
f4 a) ∧
∀a v f f1 f2 f3 f4 f5.
GraphLang.variable_CASE (GraphLang.VarBool a) v f f1 f2 f3 f4 f5 = f5 a
⊦ GraphLang.var_dom n (combin.UPDATE n1 x s) =
(if n = n1 then
GraphLang.variable_CASE x pred_set.EMPTY (λv6. pred_set.EMPTY)
(λv7. pred_set.EMPTY) (λv8. pred_set.EMPTY) (λv9. pred_set.EMPTY)
(λd. d) (λv11. pred_set.EMPTY)
else GraphLang.var_dom n s) ∧
GraphLang.var_nat n (combin.UPDATE n1 x s) =
(if n = n1 then
GraphLang.variable_CASE x 0 (λn. n) (λv7. 0) (λv8. 0) (λv9. 0)
(λv10. 0) (λv11. 0)
else GraphLang.var_nat n s) ∧
GraphLang.var_word8 n (combin.UPDATE n1 x s) =
(if n = n1 then
GraphLang.variable_CASE x (words.n2w 0) (λv6. words.n2w 0) (λw. w)
(λv8. words.n2w 0) (λv9. words.n2w 0) (λv10. words.n2w 0)
(λv11. words.n2w 0)
else GraphLang.var_word8 n s) ∧
GraphLang.var_word32 n (combin.UPDATE n1 x s) =
(if n = n1 then
GraphLang.variable_CASE x (words.n2w 0) (λv6. words.n2w 0)
(λv7. words.n2w 0) (λw. w) (λv9. words.n2w 0) (λv10. words.n2w 0)
(λv11. words.n2w 0)
else GraphLang.var_word32 n s) ∧
GraphLang.var_mem n (combin.UPDATE n1 x s) =
(if n = n1 then
GraphLang.variable_CASE x (λv8. words.n2w 0) (λv6 v8. words.n2w 0)
(λv7 v8. words.n2w 0) (λv8 v8. words.n2w 0) (λm. m)
(λv10 v8. words.n2w 0) (λv11 v8. words.n2w 0)
else GraphLang.var_mem n s) ∧
(GraphLang.var_bool n (combin.UPDATE n1 x s) ⇔
if n = n1 then
GraphLang.variable_CASE x ⊥ (λv6. ⊥) (λv7. ⊥) (λv8. ⊥) (λv9. ⊥)
(λv10. ⊥) (λq. q)
else GraphLang.var_bool n s)
⊦ (∀a. ¬(GraphLang.VarNone = GraphLang.VarNat a)) ∧
(∀a. ¬(GraphLang.VarNone = GraphLang.VarWord8 a)) ∧
(∀a. ¬(GraphLang.VarNone = GraphLang.VarWord32 a)) ∧
(∀a. ¬(GraphLang.VarNone = GraphLang.VarMem a)) ∧
(∀a. ¬(GraphLang.VarNone = GraphLang.VarDom a)) ∧
(∀a. ¬(GraphLang.VarNone = GraphLang.VarBool a)) ∧
(∀a' a. ¬(GraphLang.VarNat a = GraphLang.VarWord8 a')) ∧
(∀a' a. ¬(GraphLang.VarNat a = GraphLang.VarWord32 a')) ∧
(∀a' a. ¬(GraphLang.VarNat a = GraphLang.VarMem a')) ∧
(∀a' a. ¬(GraphLang.VarNat a = GraphLang.VarDom a')) ∧
(∀a' a. ¬(GraphLang.VarNat a = GraphLang.VarBool a')) ∧
(∀a' a. ¬(GraphLang.VarWord8 a = GraphLang.VarWord32 a')) ∧
(∀a' a. ¬(GraphLang.VarWord8 a = GraphLang.VarMem a')) ∧
(∀a' a. ¬(GraphLang.VarWord8 a = GraphLang.VarDom a')) ∧
(∀a' a. ¬(GraphLang.VarWord8 a = GraphLang.VarBool a')) ∧
(∀a' a. ¬(GraphLang.VarWord32 a = GraphLang.VarMem a')) ∧
(∀a' a. ¬(GraphLang.VarWord32 a = GraphLang.VarDom a')) ∧
(∀a' a. ¬(GraphLang.VarWord32 a = GraphLang.VarBool a')) ∧
(∀a' a. ¬(GraphLang.VarMem a = GraphLang.VarDom a')) ∧
(∀a' a. ¬(GraphLang.VarMem a = GraphLang.VarBool a')) ∧
∀a' a. ¬(GraphLang.VarDom a = GraphLang.VarBool a')
⊦ (∀fs. GraphLang.good_stack_tail fs [] ⇔ ⊤) ∧
(∀x fs. GraphLang.good_stack_tail fs (x :: []) ⇔ ⊤) ∧
∀xs s2 s1 n2 n1 l2 l1 fs.
GraphLang.good_stack_tail fs ((l1, s1, n1) :: (l2, s2, n2) :: xs) ⇔
GraphLang.good_stack_tail fs ((l2, s2, n2) :: xs) ∧
∃n x1 x2 g x3 ret y1 y2 y3.
l2 = GraphLang.NextNode n ∧
GraphLang.list_func_trans fs n2 =
some (GraphLang.GraphFunction x1 x2 g x3) ∧
g n = some (GraphLang.Call ret y1 y2 y3) ∧
GraphLang.next_node_CASE ret
(λi.
GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
[]) s1 = words.n2w i ∧ even i)
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
[]) s1 =
GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
[]) s2) ⊥
⊦ GraphLang.good_stack_tail_tupled =
relation.WFREC
(select R'.
wellFounded R' ∧
∀n1 s1 l1 xs n2 s2 l2 fs.
R' (fs, (l2, s2, n2) :: xs)
(fs, (l1, s1, n1) :: (l2, s2, n2) :: xs))
(λgood_stack_tail_tupled a.
pair.pair_CASE a
(λfs v1.
list.list_CASE v1 (id ⊤)
(λx v3.
list.list_CASE v3 (id ⊤)
(λv4 xs.
pair.pair_CASE v4
(λl2 v7.
pair.pair_CASE v7
(λs2 n2.
pair.pair_CASE x
(λl1 v11.
pair.pair_CASE v11
(λs1 n1.
id
(good_stack_tail_tupled
(fs, (l2, s2, n2) :: xs) ∧
∃n x1 x2 g x3 ret y1 y2 y3.
l2 = GraphLang.NextNode n ∧
GraphLang.list_func_trans fs
n2 =
some
(GraphLang.GraphFunction
x1 x2 g x3) ∧
g n =
some
(GraphLang.Call ret y1 y2
y3) ∧
GraphLang.next_node_CASE ret
(λi.
GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
[]) s1 =
words.n2w i ∧ even i)
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
[]) s1 =
GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
[]) s2) ⊥)))))))))
⊦ ∀s.
GraphLang.arm_STATE s =
set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR (GraphLang.arm_STATE_REGS s)
(GraphLang.arm_STATE_CPSR s))
(arm_decomp.arm_OK
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
[]) s))))
(arm_prog.arm_MEMORY
(GraphLang.var_dom
(string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: []) s)
(GraphLang.var_mem
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: []) s)))
(GraphLang.arm_STACK_MEMORY
(GraphLang.var_dom
(string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
[]) s)
(GraphLang.var_mem
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
[]) s))
⊦ ∀p r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 n z c v mode dmem
memory dom_stack stack.
straightline.arm_assert
(p, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14,
n, z, c, v, mode, dmem, memory, dom_stack, stack) =
set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(arm_prog.arm_PC
p)
(arm_prog.arm_REG
(arm_step.R_mode
mode
(words.n2w
0))
r0))
(arm_prog.arm_REG
(arm_step.R_mode
mode
(words.n2w
1))
r1))
(arm_prog.arm_REG
(arm_step.R_mode
mode
(words.n2w
(arithmetic.BIT2
0)))
r2))
(arm_prog.arm_REG
(arm_step.R_mode
mode
(words.n2w
3))
r3))
(arm_prog.arm_REG
(arm_step.R_mode
mode
(words.n2w
(arithmetic.BIT2
1)))
r4))
(arm_prog.arm_REG
(arm_step.R_mode
mode
(words.n2w
(bit1
(arithmetic.BIT2
0))))
r5))
(arm_prog.arm_REG
(arm_step.R_mode mode
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2
0))))
r6))
(arm_prog.arm_REG
(arm_step.R_mode mode
(words.n2w 7)) r7))
(arm_prog.arm_REG
(arm_step.R_mode mode
(words.n2w
(arithmetic.BIT2 3)))
r8))
(arm_prog.arm_REG
(arm_step.R_mode mode
(words.n2w
(bit1
(arithmetic.BIT2
1)))) r9))
(arm_prog.arm_REG
(arm_step.R_mode mode
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2 1))))
r10))
(arm_prog.arm_REG
(arm_step.R_mode mode
(words.n2w
(bit1
(bit1
(arithmetic.BIT2 0)))))
r11))
(arm_prog.arm_REG
(arm_step.R_mode mode
(words.n2w
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))
r12))
(arm_prog.arm_REG
(arm_step.R_mode mode
(words.n2w
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0))))) r13))
(arm_prog.arm_REG
(arm_step.R_mode mode
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 0))))) r14))
(arm_prog.arm_CPSR_N n)) (arm_prog.arm_CPSR_Z z))
(arm_prog.arm_CPSR_C c)) (arm_prog.arm_CPSR_V v))
(arm_decomp.arm_OK mode)) (arm_prog.arm_MEMORY dmem memory))
(GraphLang.arm_STACK_MEMORY dom_stack stack)
⊦ ∀s.
GraphLang.m0_STATE s =
set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR (GraphLang.m0_STATE_REGS s)
(GraphLang.m0_STATE_PSR s))
(m0_prog.m0_CurrentMode m0.Mode_Thread))
(m0_prog.m0_MEMORY
(GraphLang.var_dom
(string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: []) s)
(GraphLang.var_mem
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: []) s)))
(GraphLang.m0_STACK_MEMORY
(GraphLang.var_dom
(string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: []) s)
(GraphLang.var_mem
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: []) s)))
(m0_decomp.m0_COUNT
(GraphLang.var_nat
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
[]) s))
⊦ ∀s.
GraphLang.m0_STATE_REGS s =
set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(m0_prog.m0_REG m0.RName_0
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
[]) s))
(m0_prog.m0_REG m0.RName_1
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
[]) s)))
(m0_prog.m0_REG m0.RName_2
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
[]) s)))
(m0_prog.m0_REG m0.RName_3
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) ::
[]) s)))
(m0_prog.m0_REG m0.RName_4
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) :: [])
s)))
(m0_prog.m0_REG m0.RName_5
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) :: []) s)))
(m0_prog.m0_REG m0.RName_6
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) :: []) s)))
(m0_prog.m0_REG m0.RName_7
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0))))) ::
[]) s)))
(m0_prog.m0_REG m0.RName_8
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0))))) :: [])
s)))
(m0_prog.m0_REG m0.RName_9
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0))))) :: [])
s)))
(m0_prog.m0_REG m0.RName_10
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
[]) s)))
(m0_prog.m0_REG m0.RName_11
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) :: [])
s)))
(m0_prog.m0_REG m0.RName_12
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) :: []) s)))
(m0_prog.m0_REG m0.RName_SP_main
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ::
[]) s)))
(m0_prog.m0_REG m0.RName_LR
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ::
[]) s))
⊦ GraphLang.all_names =
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR (arithmetic.BIT2 (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
[]) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR (bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
[]) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) :: []) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR (bit1 (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ::
[]) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) :: []) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ::
[]) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ::
[]) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR (bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ::
[]) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) :: []) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ::
[]) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR (bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR (arithmetic.BIT2 (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
[]) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR (bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR (bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
[]) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR (bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) :: []) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR (bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR (bit1 (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ::
[]) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR (bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) :: []) ::
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) :: []) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) :: []) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
[]) ::
(string.CHR
(bit1 (bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
[]) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) :: []) ::
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) :: []) ::
(string.CHR
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) :: []) ::
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (arithmetic.BIT2 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) :: []) ::
(string.CHR
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR (bit1 (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (arithmetic.BIT2 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) :: []) ::
(string.CHR
(bit1 (bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) :: []) :: []
⊦ (∀b1 b2 b3 b4.
words.word_concat b1
(words.word_concat b2 (words.word_concat b3 b4)) =
GraphLang.word32 b1 b2 b3 b4) ∧
((arm.Aligned (w, arithmetic.BIT2 1) ⇔
words.word_and w (words.n2w 3) = words.n2w 0) ∧
(m0.Aligned (w, arithmetic.BIT2 1) ⇔
words.word_and w (words.n2w 3) = words.n2w 0)) ∧
((arm.Aligned (w, arithmetic.BIT2 0) ⇔
words.word_and w (words.n2w 1) = words.n2w 0) ∧
(m0.Aligned (w, arithmetic.BIT2 0) ⇔
words.word_and w (words.n2w 1) = words.n2w 0)) ∧
(∀a x.
(address.ALIGNED (words.n2w 0) ⇔ ⊤) ∧
(address.ALIGNED (words.n2w (arithmetic.BIT2 (bit1 x))) ⇔ ⊤) ∧
(address.ALIGNED (words.n2w (bit1 (arithmetic.BIT2 x))) ⇔ ⊥) ∧
(address.ALIGNED (words.n2w (arithmetic.BIT2 (arithmetic.BIT2 x))) ⇔
⊥) ∧ (address.ALIGNED (words.n2w (bit1 (bit1 (bit1 x)))) ⇔ ⊥) ∧
(address.ALIGNED (words.n2w (bit1 (bit1 (arithmetic.BIT2 x)))) ⇔ ⊥) ∧
(address.ALIGNED (words.word_add a (words.n2w 0)) ⇔
address.ALIGNED a) ∧
(address.ALIGNED
(words.word_add a (words.n2w (arithmetic.BIT2 (bit1 x)))) ⇔
address.ALIGNED a) ∧
(address.ALIGNED
(words.word_add a (words.n2w (bit1 (arithmetic.BIT2 x)))) ⇔
address.ALIGNED (words.word_add a (words.n2w 1))) ∧
(address.ALIGNED
(words.word_add a
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 x)))) ⇔
address.ALIGNED (words.word_add a (words.n2w (arithmetic.BIT2 0)))) ∧
(address.ALIGNED
(words.word_add a (words.n2w (bit1 (bit1 (bit1 x))))) ⇔
address.ALIGNED (words.word_add a (words.n2w 3))) ∧
(address.ALIGNED
(words.word_add a (words.n2w (bit1 (bit1 (arithmetic.BIT2 x))))) ⇔
address.ALIGNED (words.word_add a (words.n2w 3))) ∧
(address.ALIGNED (words.word_sub a (words.n2w 0)) ⇔
address.ALIGNED a) ∧
(address.ALIGNED
(words.word_sub a (words.n2w (arithmetic.BIT2 (bit1 x)))) ⇔
address.ALIGNED a) ∧
(address.ALIGNED
(words.word_sub a (words.n2w (bit1 (arithmetic.BIT2 x)))) ⇔
address.ALIGNED (words.word_sub a (words.n2w 1))) ∧
(address.ALIGNED
(words.word_sub a
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 x)))) ⇔
address.ALIGNED (words.word_sub a (words.n2w (arithmetic.BIT2 0)))) ∧
(address.ALIGNED
(words.word_sub a (words.n2w (bit1 (bit1 (bit1 x))))) ⇔
address.ALIGNED (words.word_sub a (words.n2w 3))) ∧
(address.ALIGNED
(words.word_sub a (words.n2w (bit1 (bit1 (arithmetic.BIT2 x))))) ⇔
address.ALIGNED (words.word_sub a (words.n2w 3)))) ∧
(const x y = x ∧ suc n = n + 1) ∧
(words.word_extract 7 0 w = words.w2w w ∧
words.word_extract 15 (arithmetic.BIT2 3) w =
words.w2w (words.word_lsr w (arithmetic.BIT2 3)) ∧
words.word_extract (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))
(arithmetic.BIT2 7) w =
words.w2w (words.word_lsr w (arithmetic.BIT2 7)) ∧
words.word_extract 31
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))) w =
words.w2w
(words.word_lsr w
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_extract 31 0 v = words.w2w v ∧
words.word_extract 63 (arithmetic.BIT2 15) v =
words.w2w (words.word_lsr v (arithmetic.BIT2 15))) ∧
(∀h l a.
words.word_bits h l a =
if l ≤ h then
words.word_and (words.word_lsr a l)
(words.word_sub
(words.word_lsl (words.n2w (arithmetic.BIT2 0))
(arithmetic.- h l)) (words.n2w 1))
else words.n2w 0) ∧
(∀h l a.
words.word_extract h l a =
words.w2w
(if l ≤ h then
words.word_and (words.word_lsr a l)
(words.word_sub
(words.word_lsl (words.n2w (arithmetic.BIT2 0))
(arithmetic.- h l)) (words.n2w 1))
else words.n2w 0)) ∧
(∀a.
(words.word_and a (words.n2w 3) = words.n2w 0 ⇔ address.ALIGNED a) ∧
(words.word_and (words.n2w 3) a = words.n2w 0 ⇔ address.ALIGNED a) ∧
(words.n2w 0 = words.word_and a (words.n2w 3) ⇔ address.ALIGNED a) ∧
(words.n2w 0 = words.word_and (words.n2w 3) a ⇔ address.ALIGNED a) ∧
(words.w2n a mod arithmetic.BIT2 1 = 0 ⇔ address.ALIGNED a) ∧
(0 = words.w2n a mod arithmetic.BIT2 1 ⇔ address.ALIGNED a)) ∧
(∀w. words.w2n w = 0 ⇔ w = words.n2w 0) ∧
words.word_concat b1 b2 =
words.word_or (words.word_lsl (words.w2w b1) (arithmetic.BIT2 3))
(words.w2w b2) ∧
words.word_concat h1 b2 =
words.word_or (words.word_lsl (words.w2w h1) (arithmetic.BIT2 3))
(words.w2w b2) ∧
words.word_concat b1 h2 =
words.word_or (words.word_lsl (words.w2w b1) (arithmetic.BIT2 7))
(words.w2w h2) ∧
words.word_concat h1 h2 =
words.word_or (words.word_lsl (words.w2w h1) (arithmetic.BIT2 7))
(words.w2w h2)
⊦ GraphLang.m0_STATE s =
set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(m0_prog.m0_REG
m0.RName_0
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
[])
s))
(m0_prog.m0_REG
m0.RName_1
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
[])
s)))
(m0_prog.m0_REG
m0.RName_2
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
[])
s)))
(m0_prog.m0_REG
m0.RName_3
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) ::
[])
s)))
(m0_prog.m0_REG
m0.RName_4
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) ::
[]) s)))
(m0_prog.m0_REG
m0.RName_5
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) ::
[]) s)))
(m0_prog.m0_REG
m0.RName_6
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) ::
[]) s)))
(m0_prog.m0_REG m0.RName_7
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0))))) ::
[]) s)))
(m0_prog.m0_REG m0.RName_8
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0))))) ::
[]) s)))
(m0_prog.m0_REG m0.RName_9
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0))))) ::
[]) s)))
(m0_prog.m0_REG m0.RName_10
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
[]) s)))
(m0_prog.m0_REG m0.RName_11
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) :: [])
s)))
(m0_prog.m0_REG m0.RName_12
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) :: [])
s)))
(m0_prog.m0_REG m0.RName_SP_main
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) :: []) s)))
(m0_prog.m0_REG m0.RName_LR
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 0))))) ::
[]) s)))
(m0_prog.m0_PSR_N
(GraphLang.var_bool
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) :: []) s)))
(m0_prog.m0_PSR_Z
(GraphLang.var_bool
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
[]) s)))
(m0_prog.m0_PSR_C
(GraphLang.var_bool
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1
(bit1 (arithmetic.BIT2 0)))))) ::
[]) s)))
(m0_prog.m0_PSR_V
(GraphLang.var_bool
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) :: [])
s))) (m0_prog.m0_CurrentMode m0.Mode_Thread))
(m0_prog.m0_MEMORY
(GraphLang.var_dom
(string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: []) s)
(GraphLang.var_mem
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: []) s)))
(GraphLang.m0_STACK_MEMORY
(GraphLang.var_dom
(string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
[]) s)
(GraphLang.var_mem
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
[]) s)))
(m0_decomp.m0_COUNT
(GraphLang.var_nat
(string.CHR
(bit1
(bit1
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
[]) s))
⊦ ∀s.
GraphLang.arm_STATE_REGS s =
set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s))
(words.n2w 0))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
[]) s))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s))
(words.n2w 1))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
[]) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s))
(words.n2w
(arithmetic.BIT2 0)))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
[]) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s)) (words.n2w 3))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) ::
[]) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s))
(words.n2w (arithmetic.BIT2 1)))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) :: [])
s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s))
(words.n2w
(bit1 (arithmetic.BIT2 0))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) :: []) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s))
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2 0))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) :: []) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) :: [])
s)) (words.n2w 7))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0))))) ::
[]) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) :: []) s))
(words.n2w (arithmetic.BIT2 3)))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0))))) :: [])
s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) :: []) s))
(words.n2w (bit1 (arithmetic.BIT2 1))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0))))) :: [])
s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 0)))))) ::
[]) s))
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 1))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
[]) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1 (arithmetic.BIT2 0)))))) ::
[]) s))
(words.n2w (bit1 (bit1 (arithmetic.BIT2 0)))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) :: [])
s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
[]) s))
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) :: []) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
[]) s))
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ::
[]) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) :: [])
s))
(words.n2w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ::
[]) s))
⊦ GraphLang.arm_STATE s =
set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(set_sep.STAR
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[])
s))
(words.n2w
0))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
[])
s))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[])
s))
(words.n2w
1))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
[])
s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[])
s))
(words.n2w
(arithmetic.BIT2
0)))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
[])
s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[])
s))
(words.n2w
3))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) ::
[]) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s))
(words.n2w
(arithmetic.BIT2
1)))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) ::
[]) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s))
(words.n2w
(bit1
(arithmetic.BIT2
0))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) ::
[]) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s))
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2
0))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0))))) ::
[]) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s))
(words.n2w 7))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0))))) ::
[]) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s))
(words.n2w
(arithmetic.BIT2 3)))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0))))) ::
[]) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s))
(words.n2w
(bit1
(arithmetic.BIT2 1))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0))))) ::
[]) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s))
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2 1))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(bit1
(bit1
(arithmetic.BIT2
0))))) :: [])
s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s))
(words.n2w
(bit1
(bit1 (arithmetic.BIT2 0)))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) :: [])
s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
[]) s))
(words.n2w
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0))))) :: []) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) :: [])
s))
(words.n2w
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 0))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 0))))) ::
[]) s)))
(arm_prog.arm_REG
(arm_step.R_mode
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
0)))))) :: [])
s))
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 0)))))
(GraphLang.var_word32
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0))))) ::
[]) s)))
(arm_prog.arm_CPSR_N
(GraphLang.var_bool
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 0)))))) ::
[]) s)))
(arm_prog.arm_CPSR_Z
(GraphLang.var_bool
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) :: [])
s)))
(arm_prog.arm_CPSR_C
(GraphLang.var_bool
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
[]) s)))
(arm_prog.arm_CPSR_V
(GraphLang.var_bool
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) :: []) s)))
(arm_decomp.arm_OK
(words.w2w
(GraphLang.var_word8
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) :: [])
s))))
(arm_prog.arm_MEMORY
(GraphLang.var_dom
(string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
[]) s)
(GraphLang.var_mem
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
[]) s)))
(GraphLang.arm_STACK_MEMORY
(GraphLang.var_dom
(string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
[]) s)
(GraphLang.var_mem
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ::
[]) s))
⊦ GraphLang.IMPL_INST code locs
(GraphLang.Inst entry (const ⊤)
(GraphLang.ASM (some (λs. GraphLang.SKIP_TAG str)) []
(GraphLang.Jump exit))) ⇒
∀old.
old = str ⇒
∀name.
locs name = some entry ⇒
GraphLang.IMPL_INST code locs
(GraphLang.Inst entry (const ⊤)
(GraphLang.CALL none
((string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
[], (λs. GraphLang.VarWord32 exit)) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) :: [],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
[])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) :: [],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) :: [])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) :: [],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) :: [])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ::
[],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0))))) :: [])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ::
[],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0))))) :: [])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ::
[],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0))))) :: [])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ::
[],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0))))) :: [])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ::
[],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0))))) ::
[])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ::
[],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0))))) ::
[])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ::
[],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0))))) ::
[])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) :: [],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
[])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) :: [],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) :: [])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) :: [],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) :: [])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ::
[],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0))))) :: [])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ::
[],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0))))) :: [])) ::
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) :: [],
GraphLang.var_acc
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
[])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: [],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: [])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
[],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) :: [])) ::
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) :: [],
GraphLang.var_acc
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
[])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
[],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) :: [])) ::
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: [],
GraphLang.var_acc
(string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: [])) ::
(string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: [],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: [])) ::
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: [],
GraphLang.var_acc
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: [])) ::
(string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1 (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: [],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: [])) ::
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: [],
GraphLang.var_acc
(string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) :: [])) ::
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
string.CHR
(bit1 (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(bit1
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 0)))))) ::
[],
GraphLang.var_acc
(string.CHR
(arithmetic.BIT2
(arithmetic.BIT2
(bit1
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 0)))))) ::
string.CHR
(arithmetic.BIT2
(bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ::
[])) :: []) name (GraphLang.Jump exit)))
⊦ words.word_concat (words.w2w w) (words.n2w 0) = words.word_lsl w 1 ∧
words.word_concat (words.w2w w) (words.n2w 0) =
words.word_lsl w (arithmetic.BIT2 0) ∧
words.word_asr w (words.w2n (words.w2w v)) =
GraphLang.SignedShiftRight w (words.word_and v (words.n2w 255)) ∧
words.word_lsr w (words.w2n (words.w2w v)) =
GraphLang.ShiftRight w (words.word_and v (words.n2w 255)) ∧
words.word_lsl w (words.w2n (words.w2w v)) =
GraphLang.ShiftLeft w (words.word_and v (words.n2w 255)) ∧
(words.word_slice 31 (arithmetic.BIT2 0) w = w ⇔
words.word_and w (words.n2w 1) = words.n2w 0 ∧
words.word_and w (words.n2w (arithmetic.BIT2 0)) = words.n2w 0) ∧
(w = words.word_slice 31 (arithmetic.BIT2 0) w ⇔
words.word_and w (words.n2w 1) = words.n2w 0 ∧
words.word_and w (words.n2w (arithmetic.BIT2 0)) = words.n2w 0) ∧
(words.word_slice 31 1 w = w ⇔
words.word_and w (words.n2w 1) = words.n2w 0) ∧
(w = words.word_slice 31 1 w ⇔
words.word_and w (words.n2w 1) = words.n2w 0) ∧
words.word_slice 31 (arithmetic.BIT2 0) w =
words.word_lsl (words.word_lsr w (arithmetic.BIT2 0))
(arithmetic.BIT2 0) ∧
words.word_slice 31 1 w = words.word_lsl (words.word_lsr w 1) 1 ∧
words.word_slice 31 0 w = w ∧
GraphLang.word_add_with_carry x y z =
words.word_add (words.word_add x y)
(if z then words.n2w 1 else words.n2w 0) ∧
(GraphLang.carry_out x y z ⇔
¬(words.word_and
(words.word_add (words.word_add (words.w2w x) (words.w2w y))
(if z then words.n2w 1 else words.n2w 0))
(words.n2w (arithmetic.BIT2 2147483647)) = words.n2w 0)) ∧
(fcp.fcp_index (words.word_lsl (words.w2w w1) (words.w2n (words.w2w w2)))
(arithmetic.BIT2 15) ⇔
fcp.fcp_index
(GraphLang.ShiftLeft (words.w2w w1) (words.w2w (words.w2w w2)))
(arithmetic.BIT2 15)) ∧
(fcp.fcp_index (words.word_lsl (words.w2w w) 0) (arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2147483647)) =
words.n2w 0)) ∧
(fcp.fcp_index (words.word_lsl (words.w2w w) 1) (arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1073741823)) =
words.n2w 0)) ∧
(fcp.fcp_index (words.word_lsl (words.w2w w) (arithmetic.BIT2 0))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 536870911)) =
words.n2w 0)) ∧
(fcp.fcp_index (words.word_lsl (words.w2w w) 3) (arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 268435455)) =
words.n2w 0)) ∧
(fcp.fcp_index (words.word_lsl (words.w2w w) (arithmetic.BIT2 1))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 134217727)) =
words.n2w 0)) ∧
(fcp.fcp_index (words.word_lsl (words.w2w w) (bit1 (arithmetic.BIT2 0)))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 67108863)) =
words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w) (arithmetic.BIT2 (arithmetic.BIT2 0)))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 33554431)) =
words.n2w 0)) ∧
(fcp.fcp_index (words.word_lsl (words.w2w w) 7) (arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 16777215)) =
words.n2w 0)) ∧
(fcp.fcp_index (words.word_lsl (words.w2w w) (arithmetic.BIT2 3))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8388607)) =
words.n2w 0)) ∧
(fcp.fcp_index (words.word_lsl (words.w2w w) (bit1 (arithmetic.BIT2 1)))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4194303)) =
words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w) (arithmetic.BIT2 (arithmetic.BIT2 1)))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2097151)) =
words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w) (bit1 (bit1 (arithmetic.BIT2 0))))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1048575)) =
words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w)
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 524287)) =
words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w)
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 262143)) =
words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w)
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 131071)) =
words.n2w 0)) ∧
(fcp.fcp_index (words.word_lsl (words.w2w w) 15) (arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 65535)) = words.n2w 0)) ∧
(fcp.fcp_index (words.word_lsl (words.w2w w) (arithmetic.BIT2 7))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 32767)) = words.n2w 0)) ∧
(fcp.fcp_index (words.word_lsl (words.w2w w) (bit1 (arithmetic.BIT2 3)))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 16383)) = words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w) (arithmetic.BIT2 (arithmetic.BIT2 3)))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8191)) = words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w) (bit1 (bit1 (arithmetic.BIT2 1))))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4095)) = words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w)
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2047)) = words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w)
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1023)) = words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w)
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1))))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 511)) = words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w)
(bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) (arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 255)) = words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w)
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 127)) = words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w)
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 63)) = words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w)
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 31)) = words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w)
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 15)) = words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w)
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 7)) = words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w)
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 3)) = words.n2w 0)) ∧
(fcp.fcp_index
(words.word_lsl (words.w2w w)
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))
(arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1)) = words.n2w 0)) ∧
(fcp.fcp_index (words.word_lsl (words.w2w w) 31) (arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 0)) = words.n2w 0)) ∧
(fcp.fcp_index w (arithmetic.- (words.w2n (words.w2w v)) 1) ∧
words.w2n (words.w2w v) ≤ arithmetic.BIT2 15 ⇔
words.word_lo (words.word_and v (words.n2w 255))
(words.n2w (bit1 (arithmetic.BIT2 7))) ∧
if words.word_and v (words.n2w 255) = words.n2w 0 then fcp.fcp_index w 0
else
fcp.fcp_index
(GraphLang.ShiftRight w
(words.word_sub (words.word_and v (words.n2w 255))
(words.n2w 1))) 0) ∧
(words.w2n (words.w2w v) ≤ arithmetic.BIT2 15 ∧
fcp.fcp_index w (arithmetic.- (words.w2n (words.w2w v)) 1) ⇔
(if words.word_and v (words.n2w 255) = words.n2w 0 then
fcp.fcp_index w 0
else
fcp.fcp_index
(GraphLang.ShiftRight w
(words.word_sub (words.word_and v (words.n2w 255))
(words.n2w 1))) 0) ∧
words.word_lo (words.word_and v (words.n2w 255))
(words.n2w (bit1 (arithmetic.BIT2 7)))) ∧
(fcp.fcp_index w (words.w2n (words.w2w v)) ∧
words.w2n (words.w2w v) ≤ 31 ⇔
words.word_lo (words.word_and v (words.n2w 255))
(words.n2w (arithmetic.BIT2 15)) ∧
fcp.fcp_index
(GraphLang.ShiftRight w (words.word_and v (words.n2w 255))) 0) ∧
(words.w2n (words.w2w v) ≤ 31 ∧
fcp.fcp_index w (words.w2n (words.w2w v)) ⇔
fcp.fcp_index
(GraphLang.ShiftRight w (words.word_and v (words.n2w 255))) 0 ∧
words.word_lo (words.word_and v (words.n2w 255))
(words.n2w (arithmetic.BIT2 15))) ∧
(fcp.fcp_index w 0 ⇔ ¬(words.word_and w (words.n2w 1) = words.n2w 0)) ∧
(words.word_bit 0 w ⇔ ¬(words.word_and w (words.n2w 1) = words.n2w 0)) ∧
words.word_lsr w 0 = GraphLang.ShiftRight w (words.n2w 0) ∧
words.word_asr w 0 = GraphLang.SignedShiftRight w (words.n2w 0) ∧
words.word_lsl w 0 = GraphLang.ShiftLeft w (words.n2w 0) ∧
(fcp.fcp_index w 1 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 0)) = words.n2w 0)) ∧
(words.word_bit 1 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 0)) = words.n2w 0)) ∧
words.word_lsr w 1 = GraphLang.ShiftRight w (words.n2w 1) ∧
words.word_asr w 1 = GraphLang.SignedShiftRight w (words.n2w 1) ∧
words.word_lsl w 1 = GraphLang.ShiftLeft w (words.n2w 1) ∧
(fcp.fcp_index w (arithmetic.BIT2 0) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 0) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 0) =
GraphLang.ShiftRight w (words.n2w (arithmetic.BIT2 0)) ∧
words.word_asr w (arithmetic.BIT2 0) =
GraphLang.SignedShiftRight w (words.n2w (arithmetic.BIT2 0)) ∧
words.word_lsl w (arithmetic.BIT2 0) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 0)) ∧
(fcp.fcp_index w 3 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 3)) = words.n2w 0)) ∧
(words.word_bit 3 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 3)) = words.n2w 0)) ∧
words.word_lsr w 3 = GraphLang.ShiftRight w (words.n2w 3) ∧
words.word_asr w 3 = GraphLang.SignedShiftRight w (words.n2w 3) ∧
words.word_lsl w 3 = GraphLang.ShiftLeft w (words.n2w 3) ∧
(fcp.fcp_index w (arithmetic.BIT2 1) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 7)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 1) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 7)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 1) =
GraphLang.ShiftRight w (words.n2w (arithmetic.BIT2 1)) ∧
words.word_asr w (arithmetic.BIT2 1) =
GraphLang.SignedShiftRight w (words.n2w (arithmetic.BIT2 1)) ∧
words.word_lsl w (arithmetic.BIT2 1) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 1)) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 0)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 15)) = words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 0)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 15)) = words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 0)) =
GraphLang.ShiftRight w (words.n2w (bit1 (arithmetic.BIT2 0))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 0)) =
GraphLang.SignedShiftRight w (words.n2w (bit1 (arithmetic.BIT2 0))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 0)) =
GraphLang.ShiftLeft w (words.n2w (bit1 (arithmetic.BIT2 0))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (arithmetic.BIT2 0)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 31)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 0)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 31)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (arithmetic.BIT2 0)) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 0))) ∧
words.word_asr w (arithmetic.BIT2 (arithmetic.BIT2 0)) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 0))) ∧
words.word_lsl w (arithmetic.BIT2 (arithmetic.BIT2 0)) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 (arithmetic.BIT2 0))) ∧
(fcp.fcp_index w 7 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 63)) = words.n2w 0)) ∧
(words.word_bit 7 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 63)) = words.n2w 0)) ∧
words.word_lsr w 7 = GraphLang.ShiftRight w (words.n2w 7) ∧
words.word_asr w 7 = GraphLang.SignedShiftRight w (words.n2w 7) ∧
words.word_lsl w 7 = GraphLang.ShiftLeft w (words.n2w 7) ∧
(words.word_msb w ⇔ fcp.fcp_index w 7) ∧
(fcp.fcp_index w 0 ⇔ ¬(words.word_and w (words.n2w 1) = words.n2w 0)) ∧
(words.word_bit 0 w ⇔ ¬(words.word_and w (words.n2w 1) = words.n2w 0)) ∧
words.word_lsr w 0 = GraphLang.ShiftRight w (words.n2w 0) ∧
words.word_asr w 0 = GraphLang.SignedShiftRight w (words.n2w 0) ∧
words.word_lsl w 0 = GraphLang.ShiftLeft w (words.n2w 0) ∧
(fcp.fcp_index w 1 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 0)) = words.n2w 0)) ∧
(words.word_bit 1 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 0)) = words.n2w 0)) ∧
words.word_lsr w 1 = GraphLang.ShiftRight w (words.n2w 1) ∧
words.word_asr w 1 = GraphLang.SignedShiftRight w (words.n2w 1) ∧
words.word_lsl w 1 = GraphLang.ShiftLeft w (words.n2w 1) ∧
(fcp.fcp_index w (arithmetic.BIT2 0) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 0) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 0) =
GraphLang.ShiftRight w (words.n2w (arithmetic.BIT2 0)) ∧
words.word_asr w (arithmetic.BIT2 0) =
GraphLang.SignedShiftRight w (words.n2w (arithmetic.BIT2 0)) ∧
words.word_lsl w (arithmetic.BIT2 0) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 0)) ∧
(fcp.fcp_index w 3 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 3)) = words.n2w 0)) ∧
(words.word_bit 3 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 3)) = words.n2w 0)) ∧
words.word_lsr w 3 = GraphLang.ShiftRight w (words.n2w 3) ∧
words.word_asr w 3 = GraphLang.SignedShiftRight w (words.n2w 3) ∧
words.word_lsl w 3 = GraphLang.ShiftLeft w (words.n2w 3) ∧
(fcp.fcp_index w (arithmetic.BIT2 1) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 7)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 1) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 7)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 1) =
GraphLang.ShiftRight w (words.n2w (arithmetic.BIT2 1)) ∧
words.word_asr w (arithmetic.BIT2 1) =
GraphLang.SignedShiftRight w (words.n2w (arithmetic.BIT2 1)) ∧
words.word_lsl w (arithmetic.BIT2 1) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 1)) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 0)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 15)) = words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 0)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 15)) = words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 0)) =
GraphLang.ShiftRight w (words.n2w (bit1 (arithmetic.BIT2 0))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 0)) =
GraphLang.SignedShiftRight w (words.n2w (bit1 (arithmetic.BIT2 0))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 0)) =
GraphLang.ShiftLeft w (words.n2w (bit1 (arithmetic.BIT2 0))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (arithmetic.BIT2 0)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 31)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 0)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 31)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (arithmetic.BIT2 0)) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 0))) ∧
words.word_asr w (arithmetic.BIT2 (arithmetic.BIT2 0)) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 0))) ∧
words.word_lsl w (arithmetic.BIT2 (arithmetic.BIT2 0)) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 (arithmetic.BIT2 0))) ∧
(fcp.fcp_index w 7 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 63)) = words.n2w 0)) ∧
(words.word_bit 7 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 63)) = words.n2w 0)) ∧
words.word_lsr w 7 = GraphLang.ShiftRight w (words.n2w 7) ∧
words.word_asr w 7 = GraphLang.SignedShiftRight w (words.n2w 7) ∧
words.word_lsl w 7 = GraphLang.ShiftLeft w (words.n2w 7) ∧
(fcp.fcp_index w (arithmetic.BIT2 3) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 127)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 3) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 127)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 3) =
GraphLang.ShiftRight w (words.n2w (arithmetic.BIT2 3)) ∧
words.word_asr w (arithmetic.BIT2 3) =
GraphLang.SignedShiftRight w (words.n2w (arithmetic.BIT2 3)) ∧
words.word_lsl w (arithmetic.BIT2 3) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 3)) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 1)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 255)) = words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 1)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 255)) = words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 1)) =
GraphLang.ShiftRight w (words.n2w (bit1 (arithmetic.BIT2 1))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 1)) =
GraphLang.SignedShiftRight w (words.n2w (bit1 (arithmetic.BIT2 1))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 1)) =
GraphLang.ShiftLeft w (words.n2w (bit1 (arithmetic.BIT2 1))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (arithmetic.BIT2 1)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 511)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 1)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 511)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (arithmetic.BIT2 1)) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 1))) ∧
words.word_asr w (arithmetic.BIT2 (arithmetic.BIT2 1)) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 1))) ∧
words.word_lsl w (arithmetic.BIT2 (arithmetic.BIT2 1)) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 (arithmetic.BIT2 1))) ∧
(fcp.fcp_index w (bit1 (bit1 (arithmetic.BIT2 0))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1023)) = words.n2w 0)) ∧
(words.word_bit (bit1 (bit1 (arithmetic.BIT2 0))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1023)) = words.n2w 0)) ∧
words.word_lsr w (bit1 (bit1 (arithmetic.BIT2 0))) =
GraphLang.ShiftRight w (words.n2w (bit1 (bit1 (arithmetic.BIT2 0)))) ∧
words.word_asr w (bit1 (bit1 (arithmetic.BIT2 0))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (bit1 (arithmetic.BIT2 0)))) ∧
words.word_lsl w (bit1 (bit1 (arithmetic.BIT2 0))) =
GraphLang.ShiftLeft w (words.n2w (bit1 (bit1 (arithmetic.BIT2 0)))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2047)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2047)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) ∧
words.word_asr w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) ∧
words.word_lsl w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))) =
GraphLang.ShiftLeft w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4095)) = words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4095)) = words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
(fcp.fcp_index w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8191)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))
w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8191)) = words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
words.word_asr w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
words.word_lsl w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.ShiftLeft w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
(fcp.fcp_index w 15 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 16383)) = words.n2w 0)) ∧
(words.word_bit 15 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 16383)) = words.n2w 0)) ∧
words.word_lsr w 15 = GraphLang.ShiftRight w (words.n2w 15) ∧
words.word_asr w 15 = GraphLang.SignedShiftRight w (words.n2w 15) ∧
words.word_lsl w 15 = GraphLang.ShiftLeft w (words.n2w 15) ∧
(words.word_msb w ⇔ fcp.fcp_index w 15) ∧
(fcp.fcp_index w 0 ⇔ ¬(words.word_and w (words.n2w 1) = words.n2w 0)) ∧
(words.word_bit 0 w ⇔ ¬(words.word_and w (words.n2w 1) = words.n2w 0)) ∧
words.word_lsr w 0 = GraphLang.ShiftRight w (words.n2w 0) ∧
words.word_asr w 0 = GraphLang.SignedShiftRight w (words.n2w 0) ∧
words.word_lsl w 0 = GraphLang.ShiftLeft w (words.n2w 0) ∧
(fcp.fcp_index w 1 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 0)) = words.n2w 0)) ∧
(words.word_bit 1 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 0)) = words.n2w 0)) ∧
words.word_lsr w 1 = GraphLang.ShiftRight w (words.n2w 1) ∧
words.word_asr w 1 = GraphLang.SignedShiftRight w (words.n2w 1) ∧
words.word_lsl w 1 = GraphLang.ShiftLeft w (words.n2w 1) ∧
(fcp.fcp_index w (arithmetic.BIT2 0) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 0) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 0) =
GraphLang.ShiftRight w (words.n2w (arithmetic.BIT2 0)) ∧
words.word_asr w (arithmetic.BIT2 0) =
GraphLang.SignedShiftRight w (words.n2w (arithmetic.BIT2 0)) ∧
words.word_lsl w (arithmetic.BIT2 0) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 0)) ∧
(fcp.fcp_index w 3 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 3)) = words.n2w 0)) ∧
(words.word_bit 3 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 3)) = words.n2w 0)) ∧
words.word_lsr w 3 = GraphLang.ShiftRight w (words.n2w 3) ∧
words.word_asr w 3 = GraphLang.SignedShiftRight w (words.n2w 3) ∧
words.word_lsl w 3 = GraphLang.ShiftLeft w (words.n2w 3) ∧
(fcp.fcp_index w (arithmetic.BIT2 1) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 7)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 1) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 7)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 1) =
GraphLang.ShiftRight w (words.n2w (arithmetic.BIT2 1)) ∧
words.word_asr w (arithmetic.BIT2 1) =
GraphLang.SignedShiftRight w (words.n2w (arithmetic.BIT2 1)) ∧
words.word_lsl w (arithmetic.BIT2 1) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 1)) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 0)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 15)) = words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 0)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 15)) = words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 0)) =
GraphLang.ShiftRight w (words.n2w (bit1 (arithmetic.BIT2 0))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 0)) =
GraphLang.SignedShiftRight w (words.n2w (bit1 (arithmetic.BIT2 0))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 0)) =
GraphLang.ShiftLeft w (words.n2w (bit1 (arithmetic.BIT2 0))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (arithmetic.BIT2 0)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 31)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 0)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 31)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (arithmetic.BIT2 0)) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 0))) ∧
words.word_asr w (arithmetic.BIT2 (arithmetic.BIT2 0)) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 0))) ∧
words.word_lsl w (arithmetic.BIT2 (arithmetic.BIT2 0)) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 (arithmetic.BIT2 0))) ∧
(fcp.fcp_index w 7 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 63)) = words.n2w 0)) ∧
(words.word_bit 7 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 63)) = words.n2w 0)) ∧
words.word_lsr w 7 = GraphLang.ShiftRight w (words.n2w 7) ∧
words.word_asr w 7 = GraphLang.SignedShiftRight w (words.n2w 7) ∧
words.word_lsl w 7 = GraphLang.ShiftLeft w (words.n2w 7) ∧
(fcp.fcp_index w (arithmetic.BIT2 3) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 127)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 3) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 127)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 3) =
GraphLang.ShiftRight w (words.n2w (arithmetic.BIT2 3)) ∧
words.word_asr w (arithmetic.BIT2 3) =
GraphLang.SignedShiftRight w (words.n2w (arithmetic.BIT2 3)) ∧
words.word_lsl w (arithmetic.BIT2 3) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 3)) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 1)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 255)) = words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 1)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 255)) = words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 1)) =
GraphLang.ShiftRight w (words.n2w (bit1 (arithmetic.BIT2 1))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 1)) =
GraphLang.SignedShiftRight w (words.n2w (bit1 (arithmetic.BIT2 1))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 1)) =
GraphLang.ShiftLeft w (words.n2w (bit1 (arithmetic.BIT2 1))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (arithmetic.BIT2 1)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 511)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 1)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 511)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (arithmetic.BIT2 1)) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 1))) ∧
words.word_asr w (arithmetic.BIT2 (arithmetic.BIT2 1)) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 1))) ∧
words.word_lsl w (arithmetic.BIT2 (arithmetic.BIT2 1)) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 (arithmetic.BIT2 1))) ∧
(fcp.fcp_index w (bit1 (bit1 (arithmetic.BIT2 0))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1023)) = words.n2w 0)) ∧
(words.word_bit (bit1 (bit1 (arithmetic.BIT2 0))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1023)) = words.n2w 0)) ∧
words.word_lsr w (bit1 (bit1 (arithmetic.BIT2 0))) =
GraphLang.ShiftRight w (words.n2w (bit1 (bit1 (arithmetic.BIT2 0)))) ∧
words.word_asr w (bit1 (bit1 (arithmetic.BIT2 0))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (bit1 (arithmetic.BIT2 0)))) ∧
words.word_lsl w (bit1 (bit1 (arithmetic.BIT2 0))) =
GraphLang.ShiftLeft w (words.n2w (bit1 (bit1 (arithmetic.BIT2 0)))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2047)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2047)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) ∧
words.word_asr w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) ∧
words.word_lsl w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))) =
GraphLang.ShiftLeft w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4095)) = words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4095)) = words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
(fcp.fcp_index w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8191)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))
w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8191)) = words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
words.word_asr w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
words.word_lsl w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.ShiftLeft w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
(fcp.fcp_index w 15 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 16383)) = words.n2w 0)) ∧
(words.word_bit 15 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 16383)) = words.n2w 0)) ∧
words.word_lsr w 15 = GraphLang.ShiftRight w (words.n2w 15) ∧
words.word_asr w 15 = GraphLang.SignedShiftRight w (words.n2w 15) ∧
words.word_lsl w 15 = GraphLang.ShiftLeft w (words.n2w 15) ∧
(fcp.fcp_index w (arithmetic.BIT2 7) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 32767)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 7) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 32767)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 7) =
GraphLang.ShiftRight w (words.n2w (arithmetic.BIT2 7)) ∧
words.word_asr w (arithmetic.BIT2 7) =
GraphLang.SignedShiftRight w (words.n2w (arithmetic.BIT2 7)) ∧
words.word_lsl w (arithmetic.BIT2 7) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 7)) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 3)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 65535)) = words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 3)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 65535)) = words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 3)) =
GraphLang.ShiftRight w (words.n2w (bit1 (arithmetic.BIT2 3))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 3)) =
GraphLang.SignedShiftRight w (words.n2w (bit1 (arithmetic.BIT2 3))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 3)) =
GraphLang.ShiftLeft w (words.n2w (bit1 (arithmetic.BIT2 3))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (arithmetic.BIT2 3)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 131071)) =
words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 3)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 131071)) =
words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (arithmetic.BIT2 3)) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 3))) ∧
words.word_asr w (arithmetic.BIT2 (arithmetic.BIT2 3)) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 3))) ∧
words.word_lsl w (arithmetic.BIT2 (arithmetic.BIT2 3)) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 (arithmetic.BIT2 3))) ∧
(fcp.fcp_index w (bit1 (bit1 (arithmetic.BIT2 1))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 262143)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (bit1 (arithmetic.BIT2 1))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 262143)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (bit1 (arithmetic.BIT2 1))) =
GraphLang.ShiftRight w (words.n2w (bit1 (bit1 (arithmetic.BIT2 1)))) ∧
words.word_asr w (bit1 (bit1 (arithmetic.BIT2 1))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (bit1 (arithmetic.BIT2 1)))) ∧
words.word_lsl w (bit1 (bit1 (arithmetic.BIT2 1))) =
GraphLang.ShiftLeft w (words.n2w (bit1 (bit1 (arithmetic.BIT2 1)))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 524287)) =
words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 524287)) =
words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) ∧
words.word_asr w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) ∧
words.word_lsl w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))) =
GraphLang.ShiftLeft w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1048575)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1048575)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ∧
(fcp.fcp_index w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2097151)) =
words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))
w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2097151)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1))) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ∧
words.word_asr w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1))) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ∧
words.word_lsl w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1))) =
GraphLang.ShiftLeft w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ∧
(fcp.fcp_index w (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4194303)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4194303)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_asr w (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_lsl w (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8388607)) =
words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8388607)) =
words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_asr w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_lsl w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 16777215)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 16777215)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 33554431)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 33554431)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_asr w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_lsl w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 67108863)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 67108863)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_asr w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_lsl w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 134217727)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 134217727)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_asr w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_lsl w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 268435455)) =
words.n2w 0)) ∧
(words.word_bit
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 268435455)) =
words.n2w 0)) ∧
words.word_lsr w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_asr w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_lsl w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 536870911)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 536870911)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_asr w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_lsl w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w 31 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1073741823)) =
words.n2w 0)) ∧
(words.word_bit 31 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1073741823)) =
words.n2w 0)) ∧
words.word_lsr w 31 = GraphLang.ShiftRight w (words.n2w 31) ∧
words.word_asr w 31 = GraphLang.SignedShiftRight w (words.n2w 31) ∧
words.word_lsl w 31 = GraphLang.ShiftLeft w (words.n2w 31) ∧
(fcp.fcp_index w (arithmetic.BIT2 15) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2147483647)) =
words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 15) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2147483647)) =
words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 15) =
GraphLang.ShiftRight w (words.n2w (arithmetic.BIT2 15)) ∧
words.word_asr w (arithmetic.BIT2 15) =
GraphLang.SignedShiftRight w (words.n2w (arithmetic.BIT2 15)) ∧
words.word_lsl w (arithmetic.BIT2 15) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 15)) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 7)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4294967295)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 7)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4294967295)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 7)) =
GraphLang.ShiftRight w (words.n2w (bit1 (arithmetic.BIT2 7))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 7)) =
GraphLang.SignedShiftRight w (words.n2w (bit1 (arithmetic.BIT2 7))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 7)) =
GraphLang.ShiftLeft w (words.n2w (bit1 (arithmetic.BIT2 7))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (arithmetic.BIT2 7)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8589934591)) =
words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 7)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8589934591)) =
words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (arithmetic.BIT2 7)) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 7))) ∧
words.word_asr w (arithmetic.BIT2 (arithmetic.BIT2 7)) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 7))) ∧
words.word_lsl w (arithmetic.BIT2 (arithmetic.BIT2 7)) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 (arithmetic.BIT2 7))) ∧
(fcp.fcp_index w (bit1 (bit1 (arithmetic.BIT2 3))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 17179869183)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (bit1 (arithmetic.BIT2 3))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 17179869183)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (bit1 (arithmetic.BIT2 3))) =
GraphLang.ShiftRight w (words.n2w (bit1 (bit1 (arithmetic.BIT2 3)))) ∧
words.word_asr w (bit1 (bit1 (arithmetic.BIT2 3))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (bit1 (arithmetic.BIT2 3)))) ∧
words.word_lsl w (bit1 (bit1 (arithmetic.BIT2 3))) =
GraphLang.ShiftLeft w (words.n2w (bit1 (bit1 (arithmetic.BIT2 3)))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 3))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 34359738367)) =
words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (bit1 (arithmetic.BIT2 3))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 34359738367)) =
words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 3))) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 3)))) ∧
words.word_asr w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 3))) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 3)))) ∧
words.word_lsl w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 3))) =
GraphLang.ShiftLeft w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 3)))) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 3))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 68719476735)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 (arithmetic.BIT2 3))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 68719476735)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 3))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 3)))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 3))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 3)))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 3))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 3)))) ∧
(fcp.fcp_index w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 3))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 137438953471)) =
words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 3)))
w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 137438953471)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 3))) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 3)))) ∧
words.word_asr w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 3))) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 3)))) ∧
words.word_lsl w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 3))) =
GraphLang.ShiftLeft w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 3)))) ∧
(fcp.fcp_index w (bit1 (bit1 (bit1 (arithmetic.BIT2 1)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 274877906943)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (bit1 (bit1 (arithmetic.BIT2 1)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 274877906943)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (bit1 (bit1 (arithmetic.BIT2 1)))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (bit1 (bit1 (arithmetic.BIT2 1))))) ∧
words.word_asr w (bit1 (bit1 (bit1 (arithmetic.BIT2 1)))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (bit1 (bit1 (arithmetic.BIT2 1))))) ∧
words.word_lsl w (bit1 (bit1 (bit1 (arithmetic.BIT2 1)))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (bit1 (bit1 (arithmetic.BIT2 1))))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 1)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 549755813887)) =
words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 1)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 549755813887)) =
words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 1)))) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 1))))) ∧
words.word_asr w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 1)))) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 1))))) ∧
words.word_lsl w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 1)))) =
GraphLang.ShiftLeft w
(words.n2w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 1))))) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1099511627775)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1099511627775)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2199023255551)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2199023255551)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))))) ∧
words.word_asr w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))))) ∧
words.word_lsl w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))))) ∧
(fcp.fcp_index w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4398046511103)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4398046511103)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))))) ∧
words.word_asr w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))))) ∧
words.word_lsl w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8796093022207)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8796093022207)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))))) ∧
words.word_asr w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))))) ∧
words.word_lsl w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))))) ∧
(fcp.fcp_index w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 17592186044415)) =
words.n2w 0)) ∧
(words.word_bit
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 17592186044415)) =
words.n2w 0)) ∧
words.word_lsr w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) =
GraphLang.ShiftRight w
(words.n2w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1))))) ∧
words.word_asr w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) =
GraphLang.SignedShiftRight w
(words.n2w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1))))) ∧
words.word_lsl w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) =
GraphLang.ShiftLeft w
(words.n2w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 35184372088831)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 35184372088831)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1))))) ∧
words.word_asr w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1))))) ∧
words.word_lsl w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1))))) ∧
(fcp.fcp_index w (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 70368744177663)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 70368744177663)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_asr w (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2 (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 140737488355327)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2 (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 140737488355327)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_asr w
(arithmetic.BIT2 (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w
(arithmetic.BIT2 (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2 (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w
(bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 281474976710655)) =
words.n2w 0)) ∧
(words.word_bit
(bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 281474976710655)) =
words.n2w 0)) ∧
words.word_lsr w
(bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w
(bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_asr w
(bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w
(bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w
(bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w
(bit1 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 562949953421311)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))
w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 562949953421311)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_asr w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w
(bit1 (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1125899906842623)) =
words.n2w 0)) ∧
(words.word_bit
(bit1 (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1125899906842623)) =
words.n2w 0)) ∧
words.word_lsr w
(bit1 (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w
(bit1 (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_asr w
(bit1 (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w
(bit1 (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w
(bit1 (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w
(bit1 (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2251799813685247)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))
w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2251799813685247)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_asr w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4503599627370495)) =
words.n2w 0)) ∧
(words.word_bit
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))
w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4503599627370495)) =
words.n2w 0)) ∧
words.word_lsr w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_asr w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 9007199254740991)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 9007199254740991)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_asr w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w
(bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 18014398509481983)) =
words.n2w 0)) ∧
(words.word_bit
(bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 18014398509481983)) =
words.n2w 0)) ∧
words.word_lsr w
(bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w
(bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_asr w
(bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w
(bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w
(bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w
(bit1 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 36028797018963967)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))
w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 36028797018963967)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_asr w
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w
(arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w
(bit1
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 72057594037927935)) =
words.n2w 0)) ∧
(words.word_bit
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))
w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 72057594037927935)) =
words.n2w 0)) ∧
words.word_lsr w
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_asr w
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w
(bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w
(bit1
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 144115188075855871)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 144115188075855871)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_asr w
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w
(arithmetic.BIT2
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w
(bit1
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 288230376151711743)) =
words.n2w 0)) ∧
(words.word_bit
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))
w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 288230376151711743)) =
words.n2w 0)) ∧
words.word_lsr w
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_asr w
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w
(bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w
(bit1
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 576460752303423487)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 576460752303423487)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_asr w
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w
(arithmetic.BIT2
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2
(bit1
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1152921504606846975)) =
words.n2w 0)) ∧
(words.word_bit
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1152921504606846975)) =
words.n2w 0)) ∧
words.word_lsr w
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_asr w
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w
(bit1
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2305843009213693951)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2305843009213693951)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_asr w
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
words.word_lsl w
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))))) ∧
(fcp.fcp_index w 63 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4611686018427387903)) =
words.n2w 0)) ∧
(words.word_bit 63 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4611686018427387903)) =
words.n2w 0)) ∧
words.word_lsr w 63 = GraphLang.ShiftRight w (words.n2w 63) ∧
words.word_asr w 63 = GraphLang.SignedShiftRight w (words.n2w 63) ∧
words.word_lsl w 63 = GraphLang.ShiftLeft w (words.n2w 63) ∧
(words.word_msb w ⇔ fcp.fcp_index w 63) ∧
words.word_lsl w (words.w2n y) = GraphLang.ShiftLeft w (words.w2w y) ∧
words.word_lsr w (words.w2n y) = GraphLang.ShiftRight w (words.w2w y) ∧
words.word_lsl w (words.w2n x) = GraphLang.ShiftLeft w (words.w2w x) ∧
words.word_lsr w (words.w2n x) = GraphLang.ShiftRight w (words.w2w x) ∧
words.word_lsl v (words.w2n x) = GraphLang.ShiftLeft v (words.w2w x) ∧
words.word_lsr v (words.w2n x) = GraphLang.ShiftRight v (words.w2w x) ∧
(fcp.fcp_index w 0 ⇔ ¬(words.word_and w (words.n2w 1) = words.n2w 0)) ∧
(words.word_bit 0 w ⇔ ¬(words.word_and w (words.n2w 1) = words.n2w 0)) ∧
words.word_lsr w 0 = GraphLang.ShiftRight w (words.n2w 0) ∧
words.word_asr w 0 = GraphLang.SignedShiftRight w (words.n2w 0) ∧
words.word_lsl w 0 = GraphLang.ShiftLeft w (words.n2w 0) ∧
(fcp.fcp_index w 1 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 0)) = words.n2w 0)) ∧
(words.word_bit 1 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 0)) = words.n2w 0)) ∧
words.word_lsr w 1 = GraphLang.ShiftRight w (words.n2w 1) ∧
words.word_asr w 1 = GraphLang.SignedShiftRight w (words.n2w 1) ∧
words.word_lsl w 1 = GraphLang.ShiftLeft w (words.n2w 1) ∧
(fcp.fcp_index w (arithmetic.BIT2 0) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 0) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 0) =
GraphLang.ShiftRight w (words.n2w (arithmetic.BIT2 0)) ∧
words.word_asr w (arithmetic.BIT2 0) =
GraphLang.SignedShiftRight w (words.n2w (arithmetic.BIT2 0)) ∧
words.word_lsl w (arithmetic.BIT2 0) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 0)) ∧
(fcp.fcp_index w 3 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 3)) = words.n2w 0)) ∧
(words.word_bit 3 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 3)) = words.n2w 0)) ∧
words.word_lsr w 3 = GraphLang.ShiftRight w (words.n2w 3) ∧
words.word_asr w 3 = GraphLang.SignedShiftRight w (words.n2w 3) ∧
words.word_lsl w 3 = GraphLang.ShiftLeft w (words.n2w 3) ∧
(fcp.fcp_index w (arithmetic.BIT2 1) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 7)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 1) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 7)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 1) =
GraphLang.ShiftRight w (words.n2w (arithmetic.BIT2 1)) ∧
words.word_asr w (arithmetic.BIT2 1) =
GraphLang.SignedShiftRight w (words.n2w (arithmetic.BIT2 1)) ∧
words.word_lsl w (arithmetic.BIT2 1) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 1)) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 0)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 15)) = words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 0)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 15)) = words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 0)) =
GraphLang.ShiftRight w (words.n2w (bit1 (arithmetic.BIT2 0))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 0)) =
GraphLang.SignedShiftRight w (words.n2w (bit1 (arithmetic.BIT2 0))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 0)) =
GraphLang.ShiftLeft w (words.n2w (bit1 (arithmetic.BIT2 0))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (arithmetic.BIT2 0)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 31)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 0)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 31)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (arithmetic.BIT2 0)) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 0))) ∧
words.word_asr w (arithmetic.BIT2 (arithmetic.BIT2 0)) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 0))) ∧
words.word_lsl w (arithmetic.BIT2 (arithmetic.BIT2 0)) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 (arithmetic.BIT2 0))) ∧
(fcp.fcp_index w 7 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 63)) = words.n2w 0)) ∧
(words.word_bit 7 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 63)) = words.n2w 0)) ∧
words.word_lsr w 7 = GraphLang.ShiftRight w (words.n2w 7) ∧
words.word_asr w 7 = GraphLang.SignedShiftRight w (words.n2w 7) ∧
words.word_lsl w 7 = GraphLang.ShiftLeft w (words.n2w 7) ∧
(fcp.fcp_index w (arithmetic.BIT2 3) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 127)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 3) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 127)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 3) =
GraphLang.ShiftRight w (words.n2w (arithmetic.BIT2 3)) ∧
words.word_asr w (arithmetic.BIT2 3) =
GraphLang.SignedShiftRight w (words.n2w (arithmetic.BIT2 3)) ∧
words.word_lsl w (arithmetic.BIT2 3) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 3)) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 1)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 255)) = words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 1)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 255)) = words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 1)) =
GraphLang.ShiftRight w (words.n2w (bit1 (arithmetic.BIT2 1))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 1)) =
GraphLang.SignedShiftRight w (words.n2w (bit1 (arithmetic.BIT2 1))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 1)) =
GraphLang.ShiftLeft w (words.n2w (bit1 (arithmetic.BIT2 1))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (arithmetic.BIT2 1)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 511)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 1)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 511)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (arithmetic.BIT2 1)) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 1))) ∧
words.word_asr w (arithmetic.BIT2 (arithmetic.BIT2 1)) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 1))) ∧
words.word_lsl w (arithmetic.BIT2 (arithmetic.BIT2 1)) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 (arithmetic.BIT2 1))) ∧
(fcp.fcp_index w (bit1 (bit1 (arithmetic.BIT2 0))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1023)) = words.n2w 0)) ∧
(words.word_bit (bit1 (bit1 (arithmetic.BIT2 0))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1023)) = words.n2w 0)) ∧
words.word_lsr w (bit1 (bit1 (arithmetic.BIT2 0))) =
GraphLang.ShiftRight w (words.n2w (bit1 (bit1 (arithmetic.BIT2 0)))) ∧
words.word_asr w (bit1 (bit1 (arithmetic.BIT2 0))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (bit1 (arithmetic.BIT2 0)))) ∧
words.word_lsl w (bit1 (bit1 (arithmetic.BIT2 0))) =
GraphLang.ShiftLeft w (words.n2w (bit1 (bit1 (arithmetic.BIT2 0)))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2047)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2047)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) ∧
words.word_asr w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) ∧
words.word_lsl w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))) =
GraphLang.ShiftLeft w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4095)) = words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4095)) = words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
(fcp.fcp_index w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8191)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))
w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8191)) = words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
words.word_asr w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
words.word_lsl w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))) =
GraphLang.ShiftLeft w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ∧
(fcp.fcp_index w 15 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 16383)) = words.n2w 0)) ∧
(words.word_bit 15 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 16383)) = words.n2w 0)) ∧
words.word_lsr w 15 = GraphLang.ShiftRight w (words.n2w 15) ∧
words.word_asr w 15 = GraphLang.SignedShiftRight w (words.n2w 15) ∧
words.word_lsl w 15 = GraphLang.ShiftLeft w (words.n2w 15) ∧
(fcp.fcp_index w (arithmetic.BIT2 7) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 32767)) = words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 7) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 32767)) = words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 7) =
GraphLang.ShiftRight w (words.n2w (arithmetic.BIT2 7)) ∧
words.word_asr w (arithmetic.BIT2 7) =
GraphLang.SignedShiftRight w (words.n2w (arithmetic.BIT2 7)) ∧
words.word_lsl w (arithmetic.BIT2 7) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 7)) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 3)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 65535)) = words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 3)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 65535)) = words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 3)) =
GraphLang.ShiftRight w (words.n2w (bit1 (arithmetic.BIT2 3))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 3)) =
GraphLang.SignedShiftRight w (words.n2w (bit1 (arithmetic.BIT2 3))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 3)) =
GraphLang.ShiftLeft w (words.n2w (bit1 (arithmetic.BIT2 3))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (arithmetic.BIT2 3)) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 131071)) =
words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 3)) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 131071)) =
words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (arithmetic.BIT2 3)) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 3))) ∧
words.word_asr w (arithmetic.BIT2 (arithmetic.BIT2 3)) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 3))) ∧
words.word_lsl w (arithmetic.BIT2 (arithmetic.BIT2 3)) =
GraphLang.ShiftLeft w (words.n2w (arithmetic.BIT2 (arithmetic.BIT2 3))) ∧
(fcp.fcp_index w (bit1 (bit1 (arithmetic.BIT2 1))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 262143)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (bit1 (arithmetic.BIT2 1))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 262143)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (bit1 (arithmetic.BIT2 1))) =
GraphLang.ShiftRight w (words.n2w (bit1 (bit1 (arithmetic.BIT2 1)))) ∧
words.word_asr w (bit1 (bit1 (arithmetic.BIT2 1))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (bit1 (arithmetic.BIT2 1)))) ∧
words.word_lsl w (bit1 (bit1 (arithmetic.BIT2 1))) =
GraphLang.ShiftLeft w (words.n2w (bit1 (bit1 (arithmetic.BIT2 1)))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 524287)) =
words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 524287)) =
words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) ∧
words.word_asr w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) ∧
words.word_lsl w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1))) =
GraphLang.ShiftLeft w
(words.n2w (arithmetic.BIT2 (bit1 (arithmetic.BIT2 1)))) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1048575)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1048575)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ∧
(fcp.fcp_index w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2097151)) =
words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))
w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 2097151)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1))) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ∧
words.word_asr w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1))) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ∧
words.word_lsl w
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1))) =
GraphLang.ShiftLeft w
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 1)))) ∧
(fcp.fcp_index w (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4194303)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 4194303)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_asr w (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_lsl w (bit1 (bit1 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (bit1 (bit1 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8388607)) =
words.n2w 0)) ∧
(words.word_bit (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 8388607)) =
words.n2w 0)) ∧
words.word_lsr w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_asr w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_lsl w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w (arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 16777215)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 16777215)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_asr w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_lsl w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 33554431)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 33554431)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_asr w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ∧
words.word_lsl w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2 (arithmetic.BIT2 (bit1 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 67108863)) =
words.n2w 0)) ∧
(words.word_bit (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 67108863)) =
words.n2w 0)) ∧
words.word_lsr w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_asr w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_lsl w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w (bit1 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 134217727)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 134217727)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_asr w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_lsl w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2 (bit1 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 268435455)) =
words.n2w 0)) ∧
(words.word_bit
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 268435455)) =
words.n2w 0)) ∧
words.word_lsr w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_asr w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_lsl w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w
(bit1 (arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 536870911)) =
words.n2w 0)) ∧
(words.word_bit
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 536870911)) =
words.n2w 0)) ∧
words.word_lsr w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftRight w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_asr w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.SignedShiftRight w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
words.word_lsl w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0)))) =
GraphLang.ShiftLeft w
(words.n2w
(arithmetic.BIT2
(arithmetic.BIT2 (arithmetic.BIT2 (arithmetic.BIT2 0))))) ∧
(fcp.fcp_index w 31 ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1073741823)) =
words.n2w 0)) ∧
(words.word_bit 31 w ⇔
¬(words.word_and w (words.n2w (arithmetic.BIT2 1073741823)) =
words.n2w 0)) ∧
words.word_lsr w 31 = GraphLang.ShiftRight w (words.n2w 31) ∧
words.word_asr w 31 = GraphLang.SignedShiftRight w (words.n2w 31) ∧
words.word_lsl w 31 = GraphLang.ShiftLeft w (words.n2w 31) ∧
(words.word_msb w ⇔ fcp.fcp_index w 31) ∧
(∀m a. GraphLang.READ8 a m = GraphLang.MemAcc8 m a) ∧
(∀m a. GraphLang.READ32 a m = GraphLang.MemAcc32 m a) ∧
(∀w y. words.word_lsl w (words.w2n y) = GraphLang.ShiftLeft w y) ∧
(∀w y. words.word_lsr w (words.w2n y) = GraphLang.ShiftRight w y) ∧
(∀m a w. GraphLang.WRITE8 a w m = GraphLang.MemUpdate8 m a w) ∧
∀m a w. GraphLang.WRITE32 a w m = GraphLang.MemUpdate32 m a w
External Type Operators
- →
- bool
- Data
- List
- list
- Option
- option
- Pair
- ×
- Sum
- Data.Sum.+
- Unit
- Data.Unit.unit
- List
- HOL4
- arm
- arm.arm_state
- arm.RName
- arm_prog
- arm_prog.arm_component
- arm_prog.arm_data
- bool
- bool.itself
- fcp
- fcp.bit0
- fcp.bit1
- fcp.cart
- ind_type
- ind_type.recspace
- integer
- integer.int
- m0
- m0.m0_state
- m0.Mode
- m0.RName
- m0_prog
- m0_prog.m0_component
- m0_prog.m0_data
- string
- string.char
- arm
- Number
- Natural
- natural
- Natural
External Constants
- =
- select
- Data
- Bool
- ∀
- ∧
- ⇒
- ∃
- ∨
- ¬
- cond
- ⊥
- ⊤
- List
- ::
- @
- []
- all
- filter
- head
- length
- map
- reverse
- tail
- Option
- none
- some
- Pair
- ,
- fst
- snd
- Bool
- Function
- const
- flip
- id
- ∘
- HOL4
- address
- address.ALIGNED
- arithmetic
- arithmetic.-
- arithmetic.BIT2
- arithmetic.DIV2
- arithmetic.NRC
- arm
- arm.Align
- arm.Aligned
- arm.CountLeadingZeroBits
- arm.HighestSetBit
- arm_decomp
- arm_decomp.arm_OK
- arm_prog
- arm_prog.arm_CPSR_C
- arm_prog.arm_CPSR_N
- arm_prog.arm_CPSR_V
- arm_prog.arm_CPSR_Z
- arm_prog.arm_MEMORY
- arm_prog.arm_PC
- arm_prog.arm_REG
- arm_prog.ARM_MODEL
- arm_step
- arm_step.R_mode
- basicSize
- basicSize.bool_size
- basicSize.option_size
- basicSize.pair_size
- bit
- bit.BIT
- bit.BITS
- bitstring
- bitstring.extend
- bitstring.field
- bitstring.field_insert
- bitstring.fixwidth
- bitstring.modify
- bitstring.shiftr
- bitstring.testbit
- bitstring.v2w
- bitstring.w2v
- blast
- blast.bcarry
- blast.BCARRY
- bool
- bool.the_value
- bool.ARB
- bool.IN
- bool.LET
- bool.TYPE_DEFINITION
- combin
- combin.FAIL
- combin.UPDATE
- fcp
- fcp.dimindex
- fcp.fcp_index
- fcp.FCP
- ind_type
- ind_type.CONSTR
- ind_type.FCONS
- integer
- integer.int_neg
- integer.int_of_num
- integer.int_sub
- integer.Num
- integer_word
- integer_word.w2i
- list
- list.list_CASE
- list.list_size
- list.ALL_DISTINCT
- list.DROP
- list.EL
- list.GENLIST
- list.GENLIST_AUX
- list.LIST_TO_SET
- list.LUPDATE
- list.REV
- list.TAKE
- list.ZIP
- m0
- m0.Align
- m0.Aligned
- m0.CountLeadingZeroBits
- m0.HighestSetBit
- m0.Mode_Thread
- m0.RName_0
- m0.RName_1
- m0.RName_10
- m0.RName_11
- m0.RName_12
- m0.RName_2
- m0.RName_3
- m0.RName_4
- m0.RName_5
- m0.RName_6
- m0.RName_7
- m0.RName_8
- m0.RName_9
- m0.RName_LR
- m0.RName_SP_main
- m0_decomp
- m0_decomp.m0_COUNT
- m0_prog
- m0_prog.m0_CurrentMode
- m0_prog.m0_MEMORY
- m0_prog.m0_PC
- m0_prog.m0_PSR_C
- m0_prog.m0_PSR_N
- m0_prog.m0_PSR_V
- m0_prog.m0_PSR_Z
- m0_prog.m0_REG
- m0_prog.M0_MODEL
- marker
- marker.Abbrev
- numeral
- numeral.exactlog
- numeral.iDUB
- numeral.iSUB
- numeral.iZ
- numeral.iiSUC
- numeral.internal_mult
- numeral.onecount
- numeral.texp_help
- option
- option.option_CASE
- option.THE
- pair
- pair.pair_CASE
- pair.UNCURRY
- pred_set
- pred_set.EMPTY
- pred_set.FINITE
- pred_set.INSERT
- pred_set.SUBSET
- pred_set.UNION
- pred_set.UNIV
- prim_rec
- prim_rec.PRE
- prog
- prog.SPEC
- relation
- relation.inv_image
- relation.RESTRICT
- relation.RTC
- relation.WFREC
- rich_list
- rich_list.COUNT_LIST
- rich_list.COUNT_LIST_AUX
- set_sep
- set_sep.cond
- set_sep.emp
- set_sep.SEP_DISJ
- set_sep.SEP_EXISTS
- set_sep.SEP_F
- set_sep.STAR
- sorting
- sorting.PERM
- string
- string.char_size
- string.CHR
- string.ORD
- triple
- triple.TRIPLE
- words
- words.add_with_carry
- words.bit_field_insert
- words.dimword
- words.n2w
- words.w2n
- words.w2w
- words.word_1comp
- words.word_2comp
- words.word_T
- words.word_add
- words.word_and
- words.word_asr
- words.word_bit
- words.word_bits
- words.word_concat
- words.word_extract
- words.word_join
- words.word_len
- words.word_lo
- words.word_log2
- words.word_lsl
- words.word_lsr
- words.word_modify
- words.word_msb
- words.word_mul
- words.word_or
- words.word_rol
- words.word_ror
- words.word_slice
- words.word_sub
- words.BIT_SET
- address
- Number
- Natural
- *
- +
- <
- ≤
- >
- ≥
- ↑
- bit1
- div
- even
- min
- mod
- odd
- suc
- zero
- Natural
- Relation
- empty
- wellFounded
Assumptions
⊦ ⊤
⊦ pred_set.FINITE pred_set.UNIV
⊦ wellFounded empty
⊦ wellFounded (<)
⊦ 0 = 0
⊦ 0 < fcp.dimindex bool.the_value
⊦ 0 < words.dimword bool.the_value
⊦ ∀x. x = x
⊦ ∀t. ⊥ ⇒ t
⊦ ∀n. 0 ≤ n
⊦ ∀m. m ≤ m
⊦ bool.LET = λf x. f x
⊦ pred_set.FINITE pred_set.UNIV ⇔ pred_set.FINITE pred_set.UNIV
⊦ pred_set.FINITE pred_set.UNIV ⇔ pred_set.FINITE pred_set.UNIV
⊦ fcp.dimindex bool.the_value = 1
⊦ fcp.dimindex bool.the_value = arithmetic.BIT2 0
⊦ arithmetic.DIV2 (bit1 x) = x
⊦ words.w2n (words.n2w 0) = 0
⊦ list.DROP 0 l = l
⊦ ¬¬p ⇒ p
⊦ ∀x. ¬bool.IN x pred_set.EMPTY
⊦ ∀x. id x = x
⊦ ∀t. t ∨ ¬t
⊦ ∀x. marker.Abbrev x ⇔ x
⊦ ∀n. ¬(n < 0)
⊦ ∀n. ¬(n < n)
⊦ (¬) = λt. t ⇒ ⊥
⊦ (∃) = λP. P ((select) P)
⊦ ∀a. ∃x. x = a
⊦ ∀t. (∀x. t) ⇔ t
⊦ ∀t. (∃x. t) ⇔ t
⊦ ∀t. (λx. t x) = t
⊦ (∀) = λP. P = λx. ⊤
⊦ arithmetic.BIT2 0 = suc 1
⊦ words.word_2comp (words.n2w 1) = words.word_T
⊦ ¬(p ⇒ q) ⇒ p
⊦ ∀x. ¬(none = some x)
⊦ ∀x. option.THE (some x) = x
⊦ ∀x. x = x ⇔ ⊤
⊦ ∀n. ¬(suc n = 0)
⊦ ∀n. ¬(suc n ≤ 0)
⊦ ∀n. even (arithmetic.BIT2 0 * n)
⊦ ∀c. arithmetic.- c c = 0
⊦ ∀s. pred_set.UNION s s = s
⊦ ∀w. words.w2n w < words.dimword bool.the_value
⊦ ∀w. bitstring.v2w (bitstring.w2v w) = w
⊦ ∀w. words.n2w (words.w2n w) = w
⊦ ∀a. words.word_1comp (words.word_1comp a) = a
⊦ flip = λf x y. f y x
⊦ fcp.dimindex bool.the_value = arithmetic.BIT2 3
⊦ ¬(p ⇒ q) ⇒ ¬q
⊦ ¬(p ∨ q) ⇒ ¬p
⊦ ¬(p ∨ q) ⇒ ¬q
⊦ ∀A. A ⇒ ¬A ⇒ ⊥
⊦ ∀t. ¬t ⇒ t ⇒ ⊥
⊦ ∀t. (t ⇒ ⊥) ⇒ ¬t
⊦ ∀n. even n ⇔ ¬odd n
⊦ ∀n. odd n ⇔ ¬even n
⊦ ∀x. numeral.iDUB x = x + x
⊦ ∀n. rich_list.COUNT_LIST n = list.GENLIST id n
⊦ ∀n. rich_list.COUNT_LIST n = rich_list.COUNT_LIST_AUX n []
⊦ ∀q. q div 1 = q
⊦ ∀L. reverse L = list.REV L []
⊦ ∀l. length (reverse l) = length l
⊦ ∀w. words.w2w w = words.n2w (words.w2n w)
⊦ ∀w. length (bitstring.w2v w) = fcp.dimindex bool.the_value
⊦ ∀x y. const x y = x
⊦ ∀m n. m ≤ m + n
⊦ (⇒) = λp q. p ∧ q ⇔ p
⊦ fcp.dimindex bool.the_value = arithmetic.BIT2 7
⊦ fcp.dimindex bool.the_value =
arithmetic.BIT2 (bit1 (bit1 (arithmetic.BIT2 0)))
⊦ ∀t. t ⇒ ⊥ ⇔ t ⇔ ⊥
⊦ ∀t. (t ⇔ ⊤) ∨ (t ⇔ ⊥)
⊦ ∀n. arithmetic.DIV2 n = n div arithmetic.BIT2 0
⊦ ∀m. suc m = m + 1
⊦ ∀n. suc n = 1 + n
⊦ ∀a. arithmetic.- (suc a) a = 1
⊦ ∀m. arithmetic.- (suc m) 1 = m
⊦ ∀x. (fst x, snd x) = x
⊦ ∀x y. fst (x, y) = x
⊦ ∀x y. snd (x, y) = y
⊦ ∀h t. head (h :: t) = h
⊦ ∀h t. tail (h :: t) = t
⊦ ∀b t. (if b then t else t) = t
⊦ ∀n. words.n2w n = fcp.FCP (λi. bit.BIT i n)
⊦ ∀a1 a0. ¬([] = a0 :: a1)
⊦ ∀P x. P x ⇒ P ((select) P)
⊦ ∀f n. length (list.GENLIST f n) = n
⊦ fcp.dimindex bool.the_value = arithmetic.BIT2 15
⊦ ¬(⊤ ⇔ ⊥) ∧ ¬(⊥ ⇔ ⊤)
⊦ pair.pair_CASE (x, y) f = f x y
⊦ ∀n. words.w2n (words.n2w n) = n mod words.dimword bool.the_value
⊦ ∀n. arithmetic.BIT2 0 * n = n + n
⊦ ∀n. words.n2w (n mod words.dimword bool.the_value) = words.n2w n
⊦ ∀l. length l = 0 ⇔ l = []
⊦ ∀x. ∃q r. x = (q, r)
⊦ ∀x p c. prog.SPEC x p c p
⊦ ∀x y. x = y ⇔ y = x
⊦ ∀t1 t2. t1 ∧ t2 ⇔ t2 ∧ t1
⊦ ∀A B. A ∨ B ⇔ B ∨ A
⊦ ∀m n. m * n = n * m
⊦ ∀m n. m + n = n + m
⊦ ∀a c. arithmetic.- (a + c) c = a
⊦ ∀v w. words.word_add v w = words.word_add w v
⊦ ∀a b. words.word_and a b = words.word_and b a
⊦ ∀v w. words.word_mul v w = words.word_mul w v
⊦ ∀a b. words.word_or a b = words.word_or b a
⊦ ∀R f. wellFounded R ⇒ wellFounded (relation.inv_image R f)
⊦ fcp.dimindex bool.the_value = arithmetic.BIT2 31
⊦ (¬A ⇒ ⊥) ⇒ (A ⇒ ⊥) ⇒ ⊥
⊦ ∀n. 0 < n ⇒ 0 mod n = 0
⊦ ∀f g. f ∘ g = λx. f (g x)
⊦ ∀w.
words.word_2comp w = words.word_add (words.word_1comp w) (words.n2w 1)
⊦ ∀w.
words.word_2comp w = words.word_mul (words.word_2comp (words.n2w 1)) w
⊦ ∀w. words.w2n w = 0 ⇔ w = words.n2w 0
⊦ ∀A B. A ⇒ B ⇔ ¬A ∨ B
⊦ ∀m n. m < n ⇔ suc m ≤ n
⊦ ∀m n. ¬(m < n) ⇔ n ≤ m
⊦ ∀m. m = 0 ∨ ∃n. m = suc n
⊦ ∀opt. opt = none ∨ ∃x. opt = some x
⊦ ∀v w. words.word_sub v w = words.word_add v (words.word_2comp w)
⊦ ∀v w. words.word_concat v w = words.w2w (words.word_join v w)
⊦ ∀P. (λp. P p) = pair.UNCURRY (λp1 p2. P (p1, p2))
⊦ (∧) = λp q. (λf. f p q) = λf. f ⊤ ⊤
⊦ ∀P. ¬(∃x. P x) ⇔ ∀x. ¬P x
⊦ ∀w.
words.word_msb w ⇔
fcp.fcp_index w (arithmetic.- (fcp.dimindex bool.the_value) 1)
⊦ (∃) = λP. ∀q. (∀x. P x ⇒ q) ⇒ q
⊦ (∀h. P h) ⇔ ∀p_1 p_2. P (p_1, p_2)
⊦ ∀x y. some x = some y ⇔ x = y
⊦ ∀c1 c2. c1 = c2 ⇔ string.ORD c1 = string.ORD c2
⊦ ∀i n. bit.BIT i n ⇔ bool.IN i (words.BIT_SET 0 n)
⊦ ∀h l. words.word_extract h l = words.w2w ∘ words.word_bits h l
⊦ ∀m n. 0 < n ⇒ m mod n < n
⊦ ∀n k. k < n ⇒ k mod n = k
⊦ ∀m n. ¬(m ≤ n) ⇔ suc n ≤ m
⊦ ∀n m. suc n ≤ suc m ⇔ n ≤ m
⊦ ∀l1 l2.
sorting.PERM l1 l2 ⇒ (list.ALL_DISTINCT l1 ⇔ list.ALL_DISTINCT l2)
⊦ ∀a b. words.word_lo a b ⇔ words.w2n a < words.w2n b
⊦ ∀v w. words.w2n v = words.w2n w ⇔ v = w
⊦ ∀w. ∃n. w = words.n2w n ∧ n < words.dimword bool.the_value
⊦ words.dimword bool.the_value = arithmetic.BIT2 127
⊦ ∀n. address.ALIGNED (words.n2w n) ⇔ n mod arithmetic.BIT2 1 = 0
⊦ ∀n.
words.word_msb (words.n2w n) ⇔
bit.BIT (arithmetic.- (fcp.dimindex bool.the_value) 1) n
⊦ ∀m. arithmetic.- 0 m = 0 ∧ arithmetic.- m 0 = m
⊦ ∀f g x. (f ∘ g) x = f (g x)
⊦ ∀f. id ∘ f = f ∧ f ∘ id = f
⊦ ∀m n. even (m + n) ⇔ even m ⇔ even n
⊦ ∀m n. words.word_add (words.n2w m) (words.n2w n) = words.n2w (m + n)
⊦ ∀m n. words.word_mul (words.n2w m) (words.n2w n) = words.n2w (m * n)
⊦ ∀n w. n = length w ⇒ bitstring.fixwidth n w = w
⊦ ∀l1 l2. length (l1 @ l2) = length l1 + length l2
⊦ ∀v m. bitstring.shiftr v m = list.TAKE (arithmetic.- (length v) m) v
⊦ ∀R f. relation.inv_image R f = λx y. R (f x) (f y)
⊦ ∀x y.
address.ALIGNED x ∧ address.ALIGNED y ⇒
address.ALIGNED (words.word_sub x y)
⊦ fcp.dimindex bool.the_value =
if pred_set.FINITE pred_set.UNIV then
arithmetic.BIT2 0 * fcp.dimindex bool.the_value
else 1
⊦ ∀n.
words.word_2comp (words.n2w n) =
words.n2w
(arithmetic.- (words.dimword bool.the_value)
(n mod words.dimword bool.the_value))
⊦ ∀i. i < fcp.dimindex bool.the_value ⇒ fcp.fcp_index (fcp.FCP g) i = g i
⊦ ∀l. l = [] ∨ ∃h t. l = h :: t
⊦ ∀f g. f = g ⇔ ∀x. f x = g x
⊦ ∀f v. (∀x. x = v ⇒ f x) ⇔ f v
⊦ ∀P a. (∃x. x = a ∧ P x) ⇔ P a
⊦ ∀P t. (∀x. x = t ⇒ P x) ⇒ (∃) P
⊦ ∀f x y. pair.UNCURRY f (x, y) = f x y
⊦ ∀x. address.ALIGNED x ⇔ words.word_and x (words.n2w 3) = words.n2w 0
⊦ (∨) = λt1 t2. ∀t. (t1 ⇒ t) ⇒ (t2 ⇒ t) ⇒ t
⊦ ∀t1 t2. (t1 ⇒ t2) ⇒ (t2 ⇒ t1) ⇒ (t1 ⇔ t2)
⊦ ∀m n. m = n ⇔ m ≤ n ∧ n ≤ m
⊦ ∀b n. bit.BIT b n ⇔ bit.BITS b b n = 1
⊦ ∀m n. odd (m + n) ⇔ ¬(odd m ⇔ odd n)
⊦ ∀a n.
words.word_lsl a n =
words.word_mul (words.n2w (arithmetic.BIT2 0 ↑ n)) a
⊦ ∀w n. arm.Aligned (w, n) ⇔ w = arm.Align (w, n)
⊦ ∀w n. m0.Aligned (w, n) ⇔ w = m0.Align (w, n)
⊦ (p ⇔ ¬q) ⇔ (p ∨ q) ∧ (¬q ∨ ¬p)
⊦ list.LIST_TO_SET [] = pred_set.EMPTY ∧
list.LIST_TO_SET (h :: t) = pred_set.INSERT h (list.LIST_TO_SET t)
⊦ list.GENLIST f 0 = [] ∧ list.GENLIST f n = list.GENLIST_AUX f n []
⊦ ¬(¬A ∨ B) ⇒ ⊥ ⇔ A ⇒ ¬B ⇒ ⊥
⊦ ∀Q P. (∀x. P x ∨ Q) ⇔ (∀x. P x) ∨ Q
⊦ ∀P Q. P ∧ (∀x. Q x) ⇔ ∀x. P ∧ Q x
⊦ ∀P Q. P ∨ (∃x. Q x) ⇔ ∃x. P ∨ Q x
⊦ ∀P Q. (∀x. P x ⇒ Q) ⇔ (∃x. P x) ⇒ Q
⊦ ∀P Q. (∃x. P x) ∨ Q ⇔ ∃x. P x ∨ Q
⊦ ∀w m.
words.w2n (words.word_lsr w m) = words.w2n w div arithmetic.BIT2 0 ↑ m
⊦ ∀w n. arm.Align (w, n) = words.n2w (n * (words.w2n w div n))
⊦ ∀w n. m0.Align (w, n) = words.n2w (n * (words.w2n w div n))
⊦ ∀f v.
words.word_modify f (bitstring.v2w v) =
bitstring.v2w
(bitstring.modify f
(bitstring.fixwidth (fcp.dimindex bool.the_value) v))
⊦ list.EL 0 = head ∧ list.EL (suc n) (l :: ls) = list.EL n ls
⊦ ¬(A ∨ B) ⇒ ⊥ ⇔ (A ⇒ ⊥) ⇒ ¬B ⇒ ⊥
⊦ (x ⇒ y) ∧ (z ⇒ w) ⇒ x ∧ z ⇒ y ∧ w
⊦ (x ⇒ y) ∧ (z ⇒ w) ⇒ x ∨ z ⇒ y ∨ w
⊦ ∀x l2 l1. sorting.PERM (x :: l1) (x :: l2) ⇔ sorting.PERM l1 l2
⊦ ∀t1 t2 t3. t1 ∧ t2 ∧ t3 ⇔ (t1 ∧ t2) ∧ t3
⊦ ∀t1 t2 t3. t1 ⇒ t2 ⇒ t3 ⇔ t1 ∧ t2 ⇒ t3
⊦ ∀A B C. A ∨ B ∨ C ⇔ (A ∨ B) ∨ C
⊦ ∀b c d. b ∧ (c ⇒ d) ⇒ (b ⇒ c) ⇒ d
⊦ ∀m n p. m * (n * p) = m * n * p
⊦ ∀m n p. m + (n + p) = m + n + p
⊦ ∀m n p. arithmetic.- (arithmetic.- m n) p = arithmetic.- m (n + p)
⊦ ∀m n p. m + p = n + p ⇔ m = n
⊦ ∀m n p. m + p < n + p ⇔ m < n
⊦ ∀m n p. m + n ≤ m + p ⇔ n ≤ p
⊦ ∀m n p. m < n ∧ n < p ⇒ m < p
⊦ ∀m n p. m ≤ n ∧ n ≤ p ⇒ m ≤ p
⊦ ∀n. 1 ↑ n = 1 ∧ n ↑ 1 = n
⊦ ∀l1 l2 l3. l1 @ l2 @ l3 = (l1 @ l2) @ l3
⊦ ∀A B C. sorting.PERM (A @ B) C ⇒ sorting.PERM (B @ A) C
⊦ ∀P l. all P l ⇔ ∀e. bool.IN e (list.LIST_TO_SET l) ⇒ P e
⊦ ∀f g l. map f (map g l) = map (f ∘ g) l
⊦ ∀v w x.
words.word_add v (words.word_add w x) =
words.word_add (words.word_add v w) x
⊦ ∀v w x.
words.word_mul v (words.word_mul w x) =
words.word_mul (words.word_mul v w) x
⊦ ∀v w x.
words.word_sub v (words.word_add w x) =
words.word_sub (words.word_sub v w) x
⊦ ∀a b c.
words.word_and (words.word_and a b) c =
words.word_and a (words.word_and b c)
⊦ ∀v w x. words.word_sub v w = words.word_sub x w ⇔ v = x
⊦ ∀v w.
words.word_and v w =
fcp.FCP (λi. fcp.fcp_index v i ∧ fcp.fcp_index w i)
⊦ ∀v w.
words.word_or v w = fcp.FCP (λi. fcp.fcp_index v i ∨ fcp.fcp_index w i)
⊦ ∀p q r.
set_sep.STAR p (set_sep.STAR q r) = set_sep.STAR (set_sep.STAR p q) r
⊦ (∀x. P x ⇒ Q x) ⇒ (∃x. P x) ⇒ ∃x. Q x
⊦ ∀t1 t2. (if ⊤ then t1 else t2) = t1 ∧ (if ⊥ then t1 else t2) = t2
⊦ ∀t1 t2. (t1 ⇔ t2) ⇔ t1 ∧ t2 ∨ ¬t1 ∧ ¬t2
⊦ ∀n m. arithmetic.- n m = if m < n then numeral.iSUB ⊤ n m else 0
⊦ ∀x y. 0 < y ⇒ (x mod y = x ⇔ x < y)
⊦ ∀n i.
i < fcp.dimindex bool.the_value ⇒
(fcp.fcp_index (words.n2w n) i ⇔ bit.BIT i n)
⊦ ∀m n. m + n = 0 ⇔ m = 0 ∧ n = 0
⊦ ∀n. all P (list.GENLIST f n) ⇔ ∀i. i < n ⇒ P (f i)
⊦ ∀l x. ¬(l = x :: l) ∧ ¬(x :: l = l)
⊦ fcp.dimindex bool.the_value =
if pred_set.FINITE pred_set.UNIV then
arithmetic.BIT2 0 * fcp.dimindex bool.the_value + 1
else 1
⊦ fcp.dimindex bool.the_value =
if pred_set.FINITE pred_set.UNIV ∧ pred_set.FINITE pred_set.UNIV then
fcp.dimindex bool.the_value + fcp.dimindex bool.the_value
else 1
⊦ length [] = 0 ∧ ∀h t. length (h :: t) = suc (length t)
⊦ (∀w. words.word_add w (words.n2w 0) = w) ∧
∀w. words.word_add (words.n2w 0) w = w
⊦ ∀P. P 0 ∧ (∀n. P n ⇒ P (suc n)) ⇒ ∀n. P n
⊦ ∀w.
arm.HighestSetBit w =
if w = words.n2w 0 then integer.int_neg (integer.int_of_num 1)
else integer_word.w2i (words.word_log2 w)
⊦ ∀w.
m0.HighestSetBit w =
if w = words.n2w 0 then integer.int_neg (integer.int_of_num 1)
else integer_word.w2i (words.word_log2 w)
⊦ ∀w.
arm.CountLeadingZeroBits w =
integer.Num
(integer.int_sub
(integer.int_sub
(integer.int_of_num (words.word_len (words.n2w 0)))
(integer.int_of_num 1)) (arm.HighestSetBit w))
⊦ ∀w.
m0.CountLeadingZeroBits w =
integer.Num
(integer.int_sub
(integer.int_sub
(integer.int_of_num (words.word_len (words.n2w 0)))
(integer.int_of_num 1)) (m0.HighestSetBit w))
⊦ (∀t. ¬¬t ⇔ t) ∧ (¬⊤ ⇔ ⊥) ∧ (¬⊥ ⇔ ⊤)
⊦ ∀e f. ∃fn. fn none = e ∧ ∀x. fn (some x) = f x
⊦ ∀m n. ¬(m = n) ⇔ suc m ≤ n ∨ suc n ≤ m
⊦ ∀w.
bitstring.w2v w =
list.GENLIST
(λi.
fcp.fcp_index w
(arithmetic.- (arithmetic.- (fcp.dimindex bool.the_value) 1) i))
(fcp.dimindex bool.the_value)
⊦ (∀s t. pred_set.SUBSET s (pred_set.UNION s t)) ∧
∀s t. pred_set.SUBSET s (pred_set.UNION t s)
⊦ ∀x y s. bool.IN x (pred_set.INSERT y s) ⇔ x = y ∨ bool.IN x s
⊦ ∀A B C. A ∨ B ∧ C ⇔ (A ∨ B) ∧ (A ∨ C)
⊦ ∀A B C. B ∧ C ∨ A ⇔ (B ∨ A) ∧ (C ∨ A)
⊦ ∀m n p. m ≤ n ⇔ suc p * m ≤ suc p * n
⊦ ∀m n p. p * (m + n) = p * m + p * n
⊦ ∀h l v.
bitstring.field h l v =
bitstring.fixwidth (arithmetic.- (suc h) l) (bitstring.shiftr v l)
⊦ ∀n r. r < n ⇒ ∀q. (q * n + r) mod n = r
⊦ ∀n. 0 < n ⇒ n div n = 1 ∧ n mod n = 0
⊦ ∀L1 L2. sorting.PERM L1 L2 ⇔ ∀x. filter ((=) x) L1 = filter ((=) x) L2
⊦ ∀l1 l2.
sorting.PERM l1 l2 ⇒
∀x. bool.IN x (list.LIST_TO_SET l1) ⇔ bool.IN x (list.LIST_TO_SET l2)
⊦ ∀f l1 l2. map f (l1 @ l2) = map f l1 @ map f l2
⊦ ∀P l1 l2. all P (l1 @ l2) ⇔ all P l1 ∧ all P l2
⊦ ∀v w x.
words.word_mul (words.word_add v w) x =
words.word_add (words.word_mul v x) (words.word_mul w x)
⊦ ∀m n.
words.n2w m = words.n2w n ⇔
m mod words.dimword bool.the_value = n mod words.dimword bool.the_value
⊦ ∀a b.
words.word_lo (words.n2w a) (words.n2w b) ⇔
a mod words.dimword bool.the_value < b mod words.dimword bool.the_value
⊦ ∀b w.
words.word_bit b w ⇔
b ≤ arithmetic.- (fcp.dimindex bool.the_value) 1 ∧ fcp.fcp_index w b
⊦ ∀f b x y. f (if b then x else y) = if b then f x else f y
⊦ ∀f R y z. R y z ⇒ relation.RESTRICT f R z y = f y
⊦ ∀P. (∀n. (∀m. m < n ⇒ P m) ⇒ P n) ⇒ ∀n. P n
⊦ ∀x y.
words.word_lo x y ⇔
¬blast.BCARRY (fcp.dimindex bool.the_value) (fcp.fcp_index x)
((¬) ∘ fcp.fcp_index y) ⊤
⊦ ∀x y c. blast.bcarry x y c ⇔ x ∧ y ∨ (x ∨ y) ∧ c
⊦ ∀P Q. (∀x. P x ∧ Q x) ⇔ (∀x. P x) ∧ ∀x. Q x
⊦ ∀P Q. (∃x. P x ∨ Q x) ⇔ (∃x. P x) ∨ ∃x. Q x
⊦ ∀e f. ∃fn. fn 0 = e ∧ ∀n. fn (suc n) = f n (fn n)
⊦ ∀f a b c. combin.UPDATE a b f c = if a = c then b else f c
⊦ ∀P. P [] ∧ (∀t. P t ⇒ ∀h. P (h :: t)) ⇒ ∀l. P l
⊦ (∀t1 t2. (if ⊤ then t1 else t2) = t1) ∧
∀t1 t2. (if ⊥ then t1 else t2) = t2
⊦ ∀x y z. 0 < z ⇒ (y div z < x ⇔ y < x * z)
⊦ ∀m n p. arithmetic.- m n < p ⇔ m < n + p ∧ 0 < p
⊦ ∀m n p. m * n < m * p ⇔ 0 < m ∧ n < p
⊦ ∀v w.
words.word_join v w =
bool.LET
(bool.LET
(λcv cw.
words.word_or (words.word_lsl cv (fcp.dimindex bool.the_value))
cw) (words.w2w v)) (words.w2w w)
⊦ words.dimword bool.the_value = arithmetic.BIT2 32767
⊦ arithmetic.DIV2 0 = 0 ∧ (∀n. arithmetic.DIV2 (bit1 n) = n) ∧
∀n. arithmetic.DIV2 (arithmetic.BIT2 n) = suc n
⊦ ∀e l1 l2.
bool.IN e (list.LIST_TO_SET (l1 @ l2)) ⇔
bool.IN e (list.LIST_TO_SET l1) ∨ bool.IN e (list.LIST_TO_SET l2)
⊦ ∀x y.
x = y ⇔
∀i.
i < fcp.dimindex bool.the_value ⇒
fcp.fcp_index x i = fcp.fcp_index y i
⊦ ∀w n.
words.word_lsr w n =
fcp.FCP
(λi. i + n < fcp.dimindex bool.the_value ∧ fcp.fcp_index w (i + n))
⊦ (∀l. rich_list.COUNT_LIST_AUX 0 l = l) ∧
∀n l.
rich_list.COUNT_LIST_AUX (suc n) l =
rich_list.COUNT_LIST_AUX n (n :: l)
⊦ ∀x y a b. (x, y) = (a, b) ⇔ x = a ∧ y = b
⊦ ∀a0 a1 a0' a1'. a0 :: a1 = a0' :: a1' ⇔ a0 = a0' ∧ a1 = a1'
⊦ ∀L1 L2 L3 L4.
sorting.PERM L1 L3 ∧ sorting.PERM L2 L4 ⇒
sorting.PERM (L1 @ L2) (L3 @ L4)
⊦ ∀w i.
i < fcp.dimindex bool.the_value ⇒
(fcp.fcp_index (words.w2w w) i ⇔
i < fcp.dimindex bool.the_value ∧ fcp.fcp_index w i)
⊦ ∀Fn. ∃f. ∀c i r. f (ind_type.CONSTR c i r) = Fn c i r (λn. f (r n))
⊦ (list.ALL_DISTINCT [] ⇔ ⊤) ∧
∀h t.
list.ALL_DISTINCT (h :: t) ⇔
¬bool.IN h (list.LIST_TO_SET t) ∧ list.ALL_DISTINCT t
⊦ ∀n.
numeral.iDUB (bit1 n) = arithmetic.BIT2 (numeral.iDUB n) ∧
numeral.iDUB (arithmetic.BIT2 n) = arithmetic.BIT2 (bit1 n) ∧
numeral.iDUB 0 = 0
⊦ ∀l1 n.
length l1 ≤ n ⇒
∀l2. list.EL n (l1 @ l2) = list.EL (arithmetic.- n (length l1)) l2
⊦ ∀n m.
words.word_sub (words.n2w n) (words.n2w m) =
if n < m then words.word_2comp (words.n2w (arithmetic.- m n))
else words.n2w (arithmetic.- n m)
⊦ ∀l f x.
bool.IN x (list.LIST_TO_SET (map f l)) ⇔
∃y. x = f y ∧ bool.IN y (list.LIST_TO_SET l)
⊦ (p ⇔ q ⇒ r) ⇔ (p ∨ q) ∧ (p ∨ ¬r) ∧ (¬q ∨ r ∨ ¬p)
⊦ (p ⇔ q ∨ r) ⇔ (p ∨ ¬q) ∧ (p ∨ ¬r) ∧ (q ∨ r ∨ ¬p)
⊦ min 0 x = 0 ∧ min x 0 = 0 ∧ min x y = if x < y then x else y
⊦ ∀f0 f1. ∃fn. fn [] = f0 ∧ ∀a0 a1. fn (a0 :: a1) = f1 a0 a1 (fn a1)
⊦ ∀b v.
bitstring.testbit b v ⇔
bool.LET (λn. b < n ∧ list.EL (arithmetic.- (arithmetic.- n 1) b) v)
(length v)
⊦ ∀w n.
words.word_lsl w n =
fcp.FCP
(λi.
i < fcp.dimindex bool.the_value ∧ n ≤ i ∧
fcp.fcp_index w (arithmetic.- i n))
⊦ ∀R. wellFounded R ⇒ ∀P. (∀x. (∀y. R y x ⇒ P y) ⇒ P x) ⇒ ∀x. P x
⊦ ∀x p c q.
prog.SPEC x p c q ⇒ ∀c'. pred_set.SUBSET c c' ⇒ prog.SPEC x p c' q
⊦ (∀a f. ind_type.FCONS a f 0 = a) ∧
∀a f n. ind_type.FCONS a f (suc n) = f n
⊦ (∀v f. option.option_CASE none v f = v) ∧
∀x v f. option.option_CASE (some x) v f = f x
⊦ ∀x x' y y'. (x ⇔ x') ∧ (x' ⇒ (y ⇔ y')) ⇒ (x ⇒ y ⇔ x' ⇒ y')
⊦ ∀n k r. (∃q. k = q * n + r ∧ r < n) ⇒ k mod n = r
⊦ (p ⇔ q ∧ r) ⇔ (p ∨ ¬q ∨ ¬r) ∧ (q ∨ ¬p) ∧ (r ∨ ¬p)
⊦ suc 0 = 1 ∧ (∀n. suc (bit1 n) = arithmetic.BIT2 n) ∧
∀n. suc (arithmetic.BIT2 n) = bit1 (suc n)
⊦ (∀l. [] @ l = l) ∧ ∀l1 l2 h. (h :: l1) @ l2 = h :: l1 @ l2
⊦ (sorting.PERM L (x :: []) ⇔ L = x :: []) ∧
(sorting.PERM (x :: []) L ⇔ L = x :: [])
⊦ ∀h l n.
bit.BITS h l n =
n div arithmetic.BIT2 0 ↑ l mod
arithmetic.BIT2 0 ↑ arithmetic.- (suc h) l
⊦ ∀n.
string.ORD (string.CHR n) =
if n < arithmetic.BIT2 127 then n
else combin.FAIL string.ORD > 255 (string.CHR n)
⊦ ∀x p c q g.
prog.SPEC x (set_sep.STAR p (set_sep.cond g)) c q ⇔
g ⇒ prog.SPEC x p c q
⊦ P (arithmetic.- a b) ⇔ ∀d. (b = a + d ⇒ P 0) ∧ (a = b + d ⇒ P d)
⊦ ∀A B. (¬(A ∧ B) ⇔ ¬A ∨ ¬B) ∧ (¬(A ∨ B) ⇔ ¬A ∧ ¬B)
⊦ ∀h l s.
bitstring.field_insert h l s =
bitstring.modify
(λi. cond (l ≤ i ∧ i ≤ h) (bitstring.testbit (arithmetic.- i l) s))
⊦ ∀h l a.
words.bit_field_insert h l a =
words.word_modify
(λi. cond (l ≤ i ∧ i ≤ h) (fcp.fcp_index a (arithmetic.- i l)))
⊦ ∀n. 0 < n ⇒ ∀k. k = (k div n) * n + k mod n ∧ k mod n < n
⊦ ∀M R f.
f = relation.WFREC R M ⇒ wellFounded R ⇒
∀x. f x = M (relation.RESTRICT f R x) x
⊦ (∀f. map f [] = []) ∧ ∀f h t. map f (h :: t) = f h :: map f t
⊦ (∀P. all P [] ⇔ ⊤) ∧ ∀P h t. all P (h :: t) ⇔ P h ∧ all P t
⊦ list.EL (bit1 n) (l :: ls) = list.EL (prim_rec.PRE (bit1 n)) ls ∧
list.EL (arithmetic.BIT2 n) (l :: ls) = list.EL (bit1 n) ls
⊦ ∀n.
(even n ⇒ ∃m. n = arithmetic.BIT2 0 * m) ∧
(odd n ⇒ ∃m. n = suc (arithmetic.BIT2 0 * m))
⊦ ∀n v.
bitstring.fixwidth n v =
bool.LET
(λl.
if l < n then bitstring.extend ⊥ (arithmetic.- n l) v
else list.DROP (arithmetic.- l n) v) (length v)
⊦ ∀n.
even 0 ∧ even (arithmetic.BIT2 n) ∧ ¬even (bit1 n) ∧ ¬odd 0 ∧
¬odd (arithmetic.BIT2 n) ∧ odd (bit1 n)
⊦ ∀l1 l2.
list.ALL_DISTINCT (l1 @ l2) ⇔
list.ALL_DISTINCT l1 ∧ list.ALL_DISTINCT l2 ∧
∀e. bool.IN e (list.LIST_TO_SET l1) ⇒ ¬bool.IN e (list.LIST_TO_SET l2)
⊦ ∀h l.
words.word_bits h l =
λw.
fcp.FCP
(λi.
i + l ≤ min h (arithmetic.- (fcp.dimindex bool.the_value) 1) ∧
fcp.fcp_index w (i + l))
⊦ ∀h l.
words.word_slice h l =
λw.
fcp.FCP
(λi.
l ≤ i ∧
i ≤ min h (arithmetic.- (fcp.dimindex bool.the_value) 1) ∧
fcp.fcp_index w i)
⊦ bool.TYPE_DEFINITION =
λP rep.
(∀x' x''. rep x' = rep x'' ⇒ x' = x'') ∧ ∀x. P x ⇔ ∃x'. x = rep x'
⊦ (∀v f. list.list_CASE [] v f = v) ∧
∀a0 a1 v f. list.list_CASE (a0 :: a1) v f = f a0 a1
⊦ ∀t. ((⊤ ⇔ t) ⇔ t) ∧ ((t ⇔ ⊤) ⇔ t) ∧ ((⊥ ⇔ t) ⇔ ¬t) ∧ ((t ⇔ ⊥) ⇔ ¬t)
⊦ ∀P.
(∃rep. bool.TYPE_DEFINITION P rep) ⇒
∃rep abs. (∀a. abs (rep a) = a) ∧ ∀r. P r ⇔ rep (abs r) = r
⊦ (∀f. list.list_size f [] = 0) ∧
∀f a0 a1. list.list_size f (a0 :: a1) = 1 + (f a0 + list.list_size f a1)
⊦ ∀f a b c d.
¬(a = b) ⇒
combin.UPDATE a c (combin.UPDATE b d f) =
combin.UPDATE b d (combin.UPDATE a c f)
⊦ (∀f l. list.GENLIST_AUX f 0 l = l) ∧
∀f n l. list.GENLIST_AUX f (suc n) l = list.GENLIST_AUX f n (f n :: l)
⊦ ∀x p c1 m c2 q.
prog.SPEC x p c1 m ∧ prog.SPEC x m c2 q ⇒
prog.SPEC x p (pred_set.UNION c1 c2) q
⊦ (∀x. bool.IN x (list.LIST_TO_SET []) ⇔ ⊥) ∧
∀x h t.
bool.IN x (list.LIST_TO_SET (h :: t)) ⇔
x = h ∨ bool.IN x (list.LIST_TO_SET t)
⊦ ∀f g M N. M = N ∧ (∀x. x = N ⇒ f x = g x) ⇒ bool.LET f M = bool.LET g N
⊦ numeral.texp_help 0 acc = arithmetic.BIT2 acc ∧
numeral.texp_help (bit1 n) acc =
numeral.texp_help (prim_rec.PRE (bit1 n)) (bit1 acc) ∧
numeral.texp_help (arithmetic.BIT2 n) acc =
numeral.texp_help (bit1 n) (bit1 acc)
⊦ (∀P. filter P [] = []) ∧
∀P h t. filter P (h :: t) = if P h then h :: filter P t else filter P t
⊦ numeral.exactlog 0 = 0 ∧ (∀n. numeral.exactlog (bit1 n) = 0) ∧
∀n.
numeral.exactlog (arithmetic.BIT2 n) =
bool.LET (λx. if x = 0 then 0 else bit1 x) (numeral.onecount n 0)
⊦ (∀x. numeral.onecount 0 x = x) ∧
(∀n x. numeral.onecount (bit1 n) x = numeral.onecount n (suc x)) ∧
∀n x. numeral.onecount (arithmetic.BIT2 n) x = 0
⊦ list.ZIP ([], []) = [] ∧
∀x1 l1 x2 l2.
list.ZIP (x1 :: l1, x2 :: l2) = (x1, x2) :: list.ZIP (l1, l2)
⊦ arithmetic.BIT2 0 ↑ 0 = 1 ∧
arithmetic.BIT2 0 ↑ bit1 n =
numeral.texp_help (prim_rec.PRE (bit1 n)) 0 ∧
arithmetic.BIT2 0 ↑ arithmetic.BIT2 n = numeral.texp_help (bit1 n) 0
⊦ ∀t. (⊤ ∧ t ⇔ t) ∧ (t ∧ ⊤ ⇔ t) ∧ (⊥ ∧ t ⇔ ⊥) ∧ (t ∧ ⊥ ⇔ ⊥) ∧ (t ∧ t ⇔ t)
⊦ ∀t. (⊤ ∨ t ⇔ ⊤) ∧ (t ∨ ⊤ ⇔ ⊤) ∧ (⊥ ∨ t ⇔ t) ∧ (t ∨ ⊥ ⇔ t) ∧ (t ∨ t ⇔ t)
⊦ ∀h l a.
words.word_bits h l a =
if l ≤ h then
words.word_and (words.word_lsr a l)
(words.word_sub
(words.word_lsl (words.n2w (arithmetic.BIT2 0))
(arithmetic.- h l)) (words.n2w 1))
else words.n2w 0
⊦ ∀assert model pre code post.
triple.TRIPLE (assert, model) pre code post ⇔
fst post ⇒
fst pre ∧ prog.SPEC model (assert (snd pre)) code (assert (snd post))
⊦ ∀n i.
words.BIT_SET i n =
if n = 0 then pred_set.EMPTY
else if odd n then
pred_set.INSERT i (words.BIT_SET (suc i) (n div arithmetic.BIT2 0))
else words.BIT_SET (suc i) (n div arithmetic.BIT2 0)
⊦ 0 + m = m ∧ m + 0 = m ∧ suc m + n = suc (m + n) ∧ m + suc n = suc (m + n)
⊦ (∀n. list.DROP n [] = []) ∧
∀n x xs.
list.DROP n (x :: xs) =
if n = 0 then x :: xs else list.DROP (arithmetic.- n 1) xs
⊦ (∀m n.
words.word_mul (words.n2w m) (words.word_2comp (words.n2w n)) =
words.word_2comp (words.n2w (m * n))) ∧
∀m n.
words.word_mul (words.word_2comp (words.n2w m))
(words.word_2comp (words.n2w n)) = words.n2w (m * n)
⊦ ∀t. (⊤ ⇒ t ⇔ t) ∧ (t ⇒ ⊤ ⇔ ⊤) ∧ (⊥ ⇒ t ⇔ ⊤) ∧ (t ⇒ t ⇔ ⊤) ∧ (t ⇒ ⊥ ⇔ ¬t)
⊦ ∀h l a.
words.word_extract h l a =
words.w2w
(if l ≤ h then
words.word_and (words.word_lsr a l)
(words.word_sub
(words.word_lsl (words.n2w (arithmetic.BIT2 0))
(arithmetic.- h l)) (words.n2w 1))
else words.n2w 0)
⊦ (∀l1 l2 l3. l1 @ l2 = l1 @ l3 ⇔ l2 = l3) ∧
∀l1 l2 l3. l2 @ l1 = l3 @ l1 ⇔ l2 = l3
⊦ (∀l1 l2. [] = l1 @ l2 ⇔ l1 = [] ∧ l2 = []) ∧
∀l1 l2. l1 @ l2 = [] ⇔ l1 = [] ∧ l2 = []
⊦ ∀a.
words.word_and words.word_T a = a ∧ words.word_and a words.word_T = a ∧
words.word_and (words.n2w 0) a = words.n2w 0 ∧
words.word_and a (words.n2w 0) = words.n2w 0 ∧ words.word_and a a = a
⊦ ∀P Q x x' y y'.
(P ⇔ Q) ∧ (Q ⇒ x = x') ∧ (¬Q ⇒ y = y') ⇒
(if P then x else y) = if Q then x' else y'
⊦ (p ⇔ q ⇔ r) ⇔ (p ∨ q ∨ r) ∧ (p ∨ ¬r ∨ ¬q) ∧ (q ∨ ¬r ∨ ¬p) ∧ (r ∨ ¬q ∨ ¬p)
⊦ (∀x y c. blast.BCARRY 0 x y c ⇔ c) ∧
∀i x y c.
blast.BCARRY (suc i) x y c ⇔
blast.bcarry (x i) (y i) (blast.BCARRY i x y c)
⊦ ∀r r'.
r < arithmetic.BIT2 127 ⇒ r' < arithmetic.BIT2 127 ⇒
(string.CHR r = string.CHR r' ⇔ r = r')
⊦ words.dimword bool.the_value = arithmetic.BIT2 2147483647
⊦ (∀a. words.word_lsl a 0 = a) ∧ (∀a. words.word_asr a 0 = a) ∧
(∀a. words.word_lsr a 0 = a) ∧ (∀a. words.word_rol a 0 = a) ∧
∀a. words.word_ror a 0 = a
⊦ (∀R x y. arithmetic.NRC R 0 x y ⇔ x = y) ∧
∀R n x y.
arithmetic.NRC R (suc n) x y ⇔ ∃z. R x z ∧ arithmetic.NRC R n z y
⊦ ∀f g.
(∀n. g (suc n) = f n (suc n)) ⇔
(∀n. g (bit1 n) = f (arithmetic.- (bit1 n) 1) (bit1 n)) ∧
∀n. g (arithmetic.BIT2 n) = f (bit1 n) (arithmetic.BIT2 n)
⊦ ∀n m.
numeral.internal_mult 0 n = 0 ∧ numeral.internal_mult n 0 = 0 ∧
numeral.internal_mult (bit1 n) m =
numeral.iZ (numeral.iDUB (numeral.internal_mult n m) + m) ∧
numeral.internal_mult (arithmetic.BIT2 n) m =
numeral.iDUB (numeral.iZ (numeral.internal_mult n m + m))
⊦ (∀m n.
words.word_add (words.word_2comp (words.n2w m))
(words.word_2comp (words.n2w n)) =
words.word_2comp (words.n2w (m + n))) ∧
∀m n.
words.word_add (words.n2w m) (words.word_2comp (words.n2w n)) =
if n ≤ m then words.n2w (arithmetic.- m n)
else words.word_2comp (words.n2w (arithmetic.- n m))
⊦ prim_rec.PRE 0 = 0 ∧ prim_rec.PRE 1 = 0 ∧
(∀n.
prim_rec.PRE (bit1 (bit1 n)) =
arithmetic.BIT2 (prim_rec.PRE (bit1 n))) ∧
(∀n.
prim_rec.PRE (bit1 (arithmetic.BIT2 n)) = arithmetic.BIT2 (bit1 n)) ∧
∀n. prim_rec.PRE (arithmetic.BIT2 n) = bit1 n
⊦ ∀P Q.
(Q ⇒ (∀x. P x) ⇔ ∀x. Q ⇒ P x) ∧ ((∀x. P x) ∧ Q ⇔ ∀x. P x ∧ Q) ∧
(Q ∧ (∀x. P x) ⇔ ∀x. Q ∧ P x)
⊦ ∀P Q.
((∃x. P x) ⇒ Q ⇔ ∀x. P x ⇒ Q) ∧ ((∃x. P x) ∧ Q ⇔ ∃x. P x ∧ Q) ∧
(Q ∧ (∃x. P x) ⇔ ∃x. Q ∧ P x)
⊦ (bit1 x * y = z ⇔ y = z div bit1 x ∧ z mod bit1 x = 0) ∧
(arithmetic.BIT2 x * y = z ⇔
y = z div arithmetic.BIT2 x ∧ z mod arithmetic.BIT2 x = 0)
⊦ (p ⇔ if q then r else s) ⇔
(p ∨ q ∨ ¬s) ∧ (p ∨ ¬r ∨ ¬q) ∧ (p ∨ ¬r ∨ ¬s) ∧ (¬q ∨ r ∨ ¬p) ∧
(q ∨ s ∨ ¬p)
⊦ (∀e n. list.LUPDATE e n [] = []) ∧
(∀e x l. list.LUPDATE e 0 (x :: l) = e :: l) ∧
∀e n x l. list.LUPDATE e (suc n) (x :: l) = x :: list.LUPDATE e n l
⊦ ∀m n.
0 * m = 0 ∧ m * 0 = 0 ∧ 1 * m = m ∧ m * 1 = m ∧ suc m * n = m * n + n ∧
m * suc n = m + m * n
⊦ ∀x y carry_in.
words.add_with_carry (x, y, carry_in) =
bool.LET
(λunsigned_sum.
bool.LET
(λresult.
bool.LET
(bool.LET
(λcarry_out overflow. (result, carry_out, overflow))
(¬(words.w2n result = unsigned_sum)))
((words.word_msb x ⇔ words.word_msb y) ∧
¬(words.word_msb x ⇔ words.word_msb result)))
(words.n2w unsigned_sum))
(words.w2n x + words.w2n y + if carry_in then 1 else 0)
⊦ (∀f l. list.GENLIST_AUX f 0 l = l) ∧
(∀f n l.
list.GENLIST_AUX f (bit1 n) l =
list.GENLIST_AUX f (arithmetic.- (bit1 n) 1)
(f (arithmetic.- (bit1 n) 1) :: l)) ∧
∀f n l.
list.GENLIST_AUX f (arithmetic.BIT2 n) l =
list.GENLIST_AUX f (bit1 n) (f (bit1 n) :: l)
⊦ (∀l. list.DROP 0 l = l) ∧ (∀n. list.DROP (bit1 n) [] = []) ∧
(∀n. list.DROP (arithmetic.BIT2 n) [] = []) ∧
(∀n h t.
list.DROP (bit1 n) (h :: t) = list.DROP (arithmetic.- (bit1 n) 1) t) ∧
∀n h t. list.DROP (arithmetic.BIT2 n) (h :: t) = list.DROP (bit1 n) t
⊦ ∀v w.
words.word_mul (words.n2w 0) v = words.n2w 0 ∧
words.word_mul v (words.n2w 0) = words.n2w 0 ∧
words.word_mul (words.n2w 1) v = v ∧
words.word_mul v (words.n2w 1) = v ∧
words.word_mul (words.word_add v (words.n2w 1)) w =
words.word_add (words.word_mul v w) w ∧
words.word_mul v (words.word_add w (words.n2w 1)) =
words.word_add v (words.word_mul v w)
⊦ ∀n m.
(0 ≤ n ⇔ ⊤) ∧ (bit1 n ≤ 0 ⇔ ⊥) ∧ (arithmetic.BIT2 n ≤ 0 ⇔ ⊥) ∧
(bit1 n ≤ bit1 m ⇔ n ≤ m) ∧ (bit1 n ≤ arithmetic.BIT2 m ⇔ n ≤ m) ∧
(arithmetic.BIT2 n ≤ bit1 m ⇔ ¬(m ≤ n)) ∧
(arithmetic.BIT2 n ≤ arithmetic.BIT2 m ⇔ n ≤ m)
⊦ ∀n m.
(0 < bit1 n ⇔ ⊤) ∧ (0 < arithmetic.BIT2 n ⇔ ⊤) ∧ (n < 0 ⇔ ⊥) ∧
(bit1 n < bit1 m ⇔ n < m) ∧
(arithmetic.BIT2 n < arithmetic.BIT2 m ⇔ n < m) ∧
(bit1 n < arithmetic.BIT2 m ⇔ ¬(m < n)) ∧
(arithmetic.BIT2 n < bit1 m ⇔ n < m)
⊦ (∀l. list.TAKE 0 l = []) ∧ (∀n. list.TAKE (bit1 n) [] = []) ∧
(∀n. list.TAKE (arithmetic.BIT2 n) [] = []) ∧
(∀n h t.
list.TAKE (bit1 n) (h :: t) =
h :: list.TAKE (arithmetic.- (bit1 n) 1) t) ∧
∀n h t.
list.TAKE (arithmetic.BIT2 n) (h :: t) = h :: list.TAKE (bit1 n) t
⊦ ∀n m.
(0 = bit1 n ⇔ ⊥) ∧ (bit1 n = 0 ⇔ ⊥) ∧ (0 = arithmetic.BIT2 n ⇔ ⊥) ∧
(arithmetic.BIT2 n = 0 ⇔ ⊥) ∧ (bit1 n = arithmetic.BIT2 m ⇔ ⊥) ∧
(arithmetic.BIT2 n = bit1 m ⇔ ⊥) ∧ (bit1 n = bit1 m ⇔ n = m) ∧
(arithmetic.BIT2 n = arithmetic.BIT2 m ⇔ n = m)
⊦ words.dimword bool.the_value = arithmetic.BIT2 9223372036854775807
⊦ ∀a.
(words.word_and a (words.n2w 3) = words.n2w 0 ⇔ address.ALIGNED a) ∧
(words.word_and (words.n2w 3) a = words.n2w 0 ⇔ address.ALIGNED a) ∧
(words.n2w 0 = words.word_and a (words.n2w 3) ⇔ address.ALIGNED a) ∧
(words.n2w 0 = words.word_and (words.n2w 3) a ⇔ address.ALIGNED a) ∧
(words.w2n a mod arithmetic.BIT2 1 = 0 ⇔ address.ALIGNED a) ∧
(0 = words.w2n a mod arithmetic.BIT2 1 ⇔ address.ALIGNED a)
⊦ 0 * n = 0 ∧ n * 0 = 0 ∧
bit1 x * bit1 y = numeral.internal_mult (bit1 x) (bit1 y) ∧
bit1 x * arithmetic.BIT2 y =
bool.LET
(λn.
if odd n then
numeral.texp_help (arithmetic.DIV2 n) (prim_rec.PRE (bit1 x))
else numeral.internal_mult (bit1 x) (arithmetic.BIT2 y))
(numeral.exactlog (arithmetic.BIT2 y)) ∧
arithmetic.BIT2 x * bit1 y =
bool.LET
(λm.
if odd m then
numeral.texp_help (arithmetic.DIV2 m) (prim_rec.PRE (bit1 y))
else numeral.internal_mult (arithmetic.BIT2 x) (bit1 y))
(numeral.exactlog (arithmetic.BIT2 x)) ∧
arithmetic.BIT2 x * arithmetic.BIT2 y =
bool.LET
(λm.
bool.LET
(λn.
if odd m then
numeral.texp_help (arithmetic.DIV2 m)
(prim_rec.PRE (arithmetic.BIT2 y))
else if odd n then
numeral.texp_help (arithmetic.DIV2 n)
(prim_rec.PRE (arithmetic.BIT2 x))
else
numeral.internal_mult (arithmetic.BIT2 x)
(arithmetic.BIT2 y))
(numeral.exactlog (arithmetic.BIT2 y)))
(numeral.exactlog (arithmetic.BIT2 x))
⊦ ∀b n m.
numeral.iSUB b 0 x = 0 ∧ numeral.iSUB ⊤ n 0 = n ∧
numeral.iSUB ⊥ (bit1 n) 0 = numeral.iDUB n ∧
numeral.iSUB ⊤ (bit1 n) (bit1 m) = numeral.iDUB (numeral.iSUB ⊤ n m) ∧
numeral.iSUB ⊥ (bit1 n) (bit1 m) = bit1 (numeral.iSUB ⊥ n m) ∧
numeral.iSUB ⊤ (bit1 n) (arithmetic.BIT2 m) =
bit1 (numeral.iSUB ⊥ n m) ∧
numeral.iSUB ⊥ (bit1 n) (arithmetic.BIT2 m) =
numeral.iDUB (numeral.iSUB ⊥ n m) ∧
numeral.iSUB ⊥ (arithmetic.BIT2 n) 0 = bit1 n ∧
numeral.iSUB ⊤ (arithmetic.BIT2 n) (bit1 m) =
bit1 (numeral.iSUB ⊤ n m) ∧
numeral.iSUB ⊥ (arithmetic.BIT2 n) (bit1 m) =
numeral.iDUB (numeral.iSUB ⊤ n m) ∧
numeral.iSUB ⊤ (arithmetic.BIT2 n) (arithmetic.BIT2 m) =
numeral.iDUB (numeral.iSUB ⊤ n m) ∧
numeral.iSUB ⊥ (arithmetic.BIT2 n) (arithmetic.BIT2 m) =
bit1 (numeral.iSUB ⊥ n m)
⊦ ∀p q t c c'.
set_sep.STAR (set_sep.SEP_EXISTS (λv. p v)) q =
set_sep.SEP_EXISTS (λv. set_sep.STAR (p v) q) ∧
set_sep.STAR q (set_sep.SEP_EXISTS (λv. p v)) =
set_sep.SEP_EXISTS (λv. set_sep.STAR q (p v)) ∧
set_sep.SEP_DISJ (set_sep.SEP_EXISTS (λv. p v)) q =
set_sep.SEP_EXISTS (λv. set_sep.SEP_DISJ (p v) q) ∧
set_sep.SEP_DISJ q (set_sep.SEP_EXISTS (λv. p v)) =
set_sep.SEP_EXISTS (λv. set_sep.SEP_DISJ q (p v)) ∧
set_sep.SEP_EXISTS (λv. q) = q ∧
set_sep.SEP_EXISTS (λv. set_sep.STAR (p v) (set_sep.cond (v = x))) =
p x ∧ set_sep.SEP_DISJ q set_sep.SEP_F = q ∧
set_sep.SEP_DISJ set_sep.SEP_F q = q ∧
set_sep.STAR set_sep.SEP_F q = set_sep.SEP_F ∧
set_sep.STAR q set_sep.SEP_F = set_sep.SEP_F ∧
set_sep.SEP_DISJ r r = r ∧
set_sep.STAR q (set_sep.SEP_DISJ r t) =
set_sep.SEP_DISJ (set_sep.STAR q r) (set_sep.STAR q t) ∧
set_sep.STAR (set_sep.SEP_DISJ r t) q =
set_sep.SEP_DISJ (set_sep.STAR r q) (set_sep.STAR t q) ∧
set_sep.SEP_DISJ (set_sep.cond c) (set_sep.cond c') =
set_sep.cond (c ∨ c') ∧
set_sep.STAR (set_sep.cond c) (set_sep.cond c') =
set_sep.cond (c ∧ c') ∧ set_sep.cond ⊤ = set_sep.emp ∧
set_sep.cond ⊥ = set_sep.SEP_F ∧ set_sep.STAR set_sep.emp q = q ∧
set_sep.STAR q set_sep.emp = q
⊦ ∀n m.
numeral.iZ (0 + n) = n ∧ numeral.iZ (n + 0) = n ∧
numeral.iZ (bit1 n + bit1 m) = arithmetic.BIT2 (numeral.iZ (n + m)) ∧
numeral.iZ (bit1 n + arithmetic.BIT2 m) = bit1 (suc (n + m)) ∧
numeral.iZ (arithmetic.BIT2 n + bit1 m) = bit1 (suc (n + m)) ∧
numeral.iZ (arithmetic.BIT2 n + arithmetic.BIT2 m) =
arithmetic.BIT2 (suc (n + m)) ∧ suc (0 + n) = suc n ∧
suc (n + 0) = suc n ∧ suc (bit1 n + bit1 m) = bit1 (suc (n + m)) ∧
suc (bit1 n + arithmetic.BIT2 m) = arithmetic.BIT2 (suc (n + m)) ∧
suc (arithmetic.BIT2 n + bit1 m) = arithmetic.BIT2 (suc (n + m)) ∧
suc (arithmetic.BIT2 n + arithmetic.BIT2 m) =
bit1 (numeral.iiSUC (n + m)) ∧
numeral.iiSUC (0 + n) = numeral.iiSUC n ∧
numeral.iiSUC (n + 0) = numeral.iiSUC n ∧
numeral.iiSUC (bit1 n + bit1 m) = arithmetic.BIT2 (suc (n + m)) ∧
numeral.iiSUC (bit1 n + arithmetic.BIT2 m) =
bit1 (numeral.iiSUC (n + m)) ∧
numeral.iiSUC (arithmetic.BIT2 n + bit1 m) =
bit1 (numeral.iiSUC (n + m)) ∧
numeral.iiSUC (arithmetic.BIT2 n + arithmetic.BIT2 m) =
arithmetic.BIT2 (numeral.iiSUC (n + m))
⊦ ∀a x.
(address.ALIGNED (words.n2w 0) ⇔ ⊤) ∧
(address.ALIGNED (words.n2w (arithmetic.BIT2 (bit1 x))) ⇔ ⊤) ∧
(address.ALIGNED (words.n2w (bit1 (arithmetic.BIT2 x))) ⇔ ⊥) ∧
(address.ALIGNED (words.n2w (arithmetic.BIT2 (arithmetic.BIT2 x))) ⇔
⊥) ∧ (address.ALIGNED (words.n2w (bit1 (bit1 (bit1 x)))) ⇔ ⊥) ∧
(address.ALIGNED (words.n2w (bit1 (bit1 (arithmetic.BIT2 x)))) ⇔ ⊥) ∧
(address.ALIGNED (words.word_add a (words.n2w 0)) ⇔
address.ALIGNED a) ∧
(address.ALIGNED
(words.word_add a (words.n2w (arithmetic.BIT2 (bit1 x)))) ⇔
address.ALIGNED a) ∧
(address.ALIGNED
(words.word_add a (words.n2w (bit1 (arithmetic.BIT2 x)))) ⇔
address.ALIGNED (words.word_add a (words.n2w 1))) ∧
(address.ALIGNED
(words.word_add a
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 x)))) ⇔
address.ALIGNED (words.word_add a (words.n2w (arithmetic.BIT2 0)))) ∧
(address.ALIGNED
(words.word_add a (words.n2w (bit1 (bit1 (bit1 x))))) ⇔
address.ALIGNED (words.word_add a (words.n2w 3))) ∧
(address.ALIGNED
(words.word_add a (words.n2w (bit1 (bit1 (arithmetic.BIT2 x))))) ⇔
address.ALIGNED (words.word_add a (words.n2w 3))) ∧
(address.ALIGNED (words.word_sub a (words.n2w 0)) ⇔
address.ALIGNED a) ∧
(address.ALIGNED
(words.word_sub a (words.n2w (arithmetic.BIT2 (bit1 x)))) ⇔
address.ALIGNED a) ∧
(address.ALIGNED
(words.word_sub a (words.n2w (bit1 (arithmetic.BIT2 x)))) ⇔
address.ALIGNED (words.word_sub a (words.n2w 1))) ∧
(address.ALIGNED
(words.word_sub a
(words.n2w (arithmetic.BIT2 (arithmetic.BIT2 x)))) ⇔
address.ALIGNED (words.word_sub a (words.n2w (arithmetic.BIT2 0)))) ∧
(address.ALIGNED
(words.word_sub a (words.n2w (bit1 (bit1 (bit1 x))))) ⇔
address.ALIGNED (words.word_sub a (words.n2w 3))) ∧
(address.ALIGNED
(words.word_sub a (words.n2w (bit1 (bit1 (arithmetic.BIT2 x))))) ⇔
address.ALIGNED (words.word_sub a (words.n2w 3)))
⊦ (∀n. 0 + n = n) ∧ (∀n. n + 0 = n) ∧ (∀n m. n + m = numeral.iZ (n + m)) ∧
(∀n. 0 * n = 0) ∧ (∀n. n * 0 = 0) ∧ (∀n m. n * m = n * m) ∧
(∀n. arithmetic.- 0 n = 0) ∧ (∀n. arithmetic.- n 0 = n) ∧
(∀n m. arithmetic.- n m = arithmetic.- n m) ∧ (∀n. 0 ↑ bit1 n = 0) ∧
(∀n. 0 ↑ arithmetic.BIT2 n = 0) ∧ (∀n. n ↑ 0 = 1) ∧
(∀n m. n ↑ m = n ↑ m) ∧ suc 0 = 1 ∧ (∀n. suc n = suc n) ∧
prim_rec.PRE 0 = 0 ∧ (∀n. prim_rec.PRE n = prim_rec.PRE n) ∧
(∀n. n = 0 ⇔ n = 0) ∧ (∀n. 0 = n ⇔ n = 0) ∧ (∀n m. n = m ⇔ n = m) ∧
(∀n. n < 0 ⇔ ⊥) ∧ (∀n. 0 < n ⇔ 0 < n) ∧ (∀n m. n < m ⇔ n < m) ∧
(∀n. 0 > n ⇔ ⊥) ∧ (∀n. n > 0 ⇔ 0 < n) ∧ (∀n m. n > m ⇔ m < n) ∧
(∀n. 0 ≤ n ⇔ ⊤) ∧ (∀n. n ≤ 0 ⇔ n ≤ 0) ∧ (∀n m. n ≤ m ⇔ n ≤ m) ∧
(∀n. n ≥ 0 ⇔ ⊤) ∧ (∀n. 0 ≥ n ⇔ n = 0) ∧ (∀n m. n ≥ m ⇔ m ≤ n) ∧
(∀n. odd n ⇔ odd n) ∧ (∀n. even n ⇔ even n) ∧ ¬odd 0 ∧ even 0