(def-script subnet-simplification 1
(
(unfold-single-defined-constant-globally $1)
(unfold-single-defined-constant-globally subnet)
simplify
))
(def-constant all%addresses
"subnet(make%address(0#8,0#8,0#8,0#8),
make%address(0#8,0#8,0#8,0#8))"
(theory octets))
(def-theorem all-addresses-subnet-macete
"all%addresses = indic{a:addresses,truth}"
(theory octets)
(proof
(
(subnet-simplification all%addresses)
)))
(def-constant all%class%a%addresses
"lambda(o_1:octet,
subnet(make%address(o_1,0#8,0#8,0#8),
make%address(255#8,0#8,0#8,0#8)))"
(theory octets))
(def-theorem all-class-a-addresses-subnet-macete
"forall(o_1:octet,
all%class%a%addresses(o_1) = indic{a:addresses, octet_1(a) = o_1})"
(theory octets)
(proof
(
(subnet-simplification all%class%a%addresses)
)))
(def-constant all%class%b%addresses
"lambda(o_1,o_2:octet,
subnet(make%address(o_1,o_2,0#8,0#8),
make%address(255#8,255#8,0#8,0#8)))"
(theory octets))
(def-theorem all-class-b-addresses-subnet-macete
"forall(o_1,o_2:octet,
all%class%b%addresses(o_1,o_2)
=
indic{a:addresses, octet_1(a) = o_1 and octet_2(a) = o_2})"
(theory octets)
(proof
(
(subnet-simplification all%class%b%addresses)
)))
(def-constant all%class%c%addresses
"lambda(o_1,o_2,o_3:octet,
subnet(make%address(o_1,o_2,o_3,0#8),
make%address(255#8,255#8,255#8,0#8)))"
(theory octets))
(def-theorem all-class-c-addresses-subnet-macete
"forall(o_1,o_2,o_3:octet,
all%class%c%addresses(o_1,o_2,o_3)
=
indic{a:addresses,
octet_1(a) = o_1 and octet_2(a) = o_2 and octet_3(a) = o_3})"
(theory octets)
(proof
(
(subnet-simplification all%class%c%addresses)
)))
(def-theorem single-address-to-subnet-specification
"forall(a:addresses,
singleton{a} = subnet(a,make%address(255#8,255#8,255#8,255#8)))"
(theory octets)
(proof
(
direct-inference
extensionality
direct-inference
(unfold-single-defined-constant-globally subnet)
simplify
(apply-macete-with-minor-premises equal-addresses-lemma)
simplify
)))
(def-constant all%protocols
"indic{p:protocols,truth}"
(theory single-filter-theory))
(def-constant all%ports
"indic{p:protocols,truth}"
(theory single-filter-theory))