fact: Fixpoint Trie_add (trie : Trie) (st : list X.t) (item : TItem) : Trie := match st with | [ ] => Node (binsert (TrieNode trie) item) (SubTries trie) | key :: st' => match find key (SubTries trie) with | Some subtrie => Node (TrieNode trie) (add key (Trie_add subtrie st' item) (SubTries trie)) | None => Node (TrieNode trie) (add key (Trie_add TrieBag_bempty st' item) (SubTries trie)) end end.
imports: Fiat.Common.Coq__8_4__8_5__Compat Fiat.QueryStructure.Implementation.DataStructures.Bags.BagsInterface Fiat.QueryStructure.Implementation.DataStructures.Bags.BagsProperties Coq.FSets.FMapInterface Coq.FSets.FMapFacts Coq.FSets.FMapAVL Coq.ZArith.ZArith Fiat.Common Fiat.Common.List.ListFacts Fiat.Common.List.FlattenList Fiat.Common.SetEqProperties Fiat.Common.FMapExtensions Fiat.Common.List.PermutationFacts Fiat.QueryStructure.Specification.SearchTerms.ListPrefix