Check if the address keys under a given chain key in a tree comply with the BIP 32 wallet structure.
This is obtained by existentially quantifying the address index limit in bip32-compliant-addresses-for-limit-p. See the documentation of that function for details.
Theorem:
(defthm bip32-compliant-addresses-p-suff (implies (and (natp address-index-limit) (bip32-compliant-addresses-for-limit-p tree account-index chain-index address-index-limit)) (bip32-compliant-addresses-p tree account-index chain-index)))
Theorem:
(defthm booleanp-of-bip32-compliant-addresses-p (b* ((yes/no (bip32-compliant-addresses-p tree account-index chain-index))) (booleanp yes/no)) :rule-classes :rewrite)
Theorem:
(defthm bip32-compliant-addresses-p-of-bip32-key-tree-fix-tree (equal (bip32-compliant-addresses-p (bip32-key-tree-fix tree) account-index chain-index) (bip32-compliant-addresses-p tree account-index chain-index)))
Theorem:
(defthm bip32-compliant-addresses-p-bip32-key-tree-equiv-congruence-on-tree (implies (bip32-key-tree-equiv tree tree-equiv) (equal (bip32-compliant-addresses-p tree account-index chain-index) (bip32-compliant-addresses-p tree-equiv account-index chain-index))) :rule-classes :congruence)
Theorem:
(defthm bip32-compliant-addresses-p-of-ubyte32-fix-account-index (equal (bip32-compliant-addresses-p tree (ubyte32-fix account-index) chain-index) (bip32-compliant-addresses-p tree account-index chain-index)))
Theorem:
(defthm bip32-compliant-addresses-p-ubyte32-equiv-congruence-on-account-index (implies (acl2::ubyte32-equiv account-index account-index-equiv) (equal (bip32-compliant-addresses-p tree account-index chain-index) (bip32-compliant-addresses-p tree account-index-equiv chain-index))) :rule-classes :congruence)
Theorem:
(defthm bip32-compliant-addresses-p-of-ubyte32-fix-chain-index (equal (bip32-compliant-addresses-p tree account-index (ubyte32-fix chain-index)) (bip32-compliant-addresses-p tree account-index chain-index)))
Theorem:
(defthm bip32-compliant-addresses-p-ubyte32-equiv-congruence-on-chain-index (implies (acl2::ubyte32-equiv chain-index chain-index-equiv) (equal (bip32-compliant-addresses-p tree account-index chain-index) (bip32-compliant-addresses-p tree account-index chain-index-equiv))) :rule-classes :congruence)