Removing autogenerated java interop file

Signed-off-by: Daniel Borchmann <25857343a15bf1edafebc2912e82ecf775c585c1@mailbox.tu-dresden.de>

--- src/conexp/contrib/java/Main.clj
+++ src/conexp/contrib/java/Main.clj
@@ -1,1741 +0,0 @@
-(do
- (clojure.core/ns
-  conexp.contrib.java.Main
-  (:require conexp.main)
-  (:gen-class
-   :prefix
-   conexp-clj-
-   :methods
-   (^{:static true}
-    [zip [Object Object] Object]
-    ^{:static true}
-    [attribute_reduced_p [Object] Object]
-    ^{:static true}
-    [list_context_input_formats [] Object]
-    ^{:static true}
-    [transitive_closure [Object] Object]
-    ^{:static true}
-    [default_handler [Object Object Object] Object]
-    ^{:static true}
-    [context_object_closure [Object Object] Object]
-    ^{:static true}
-    [yes_or_no_p [Object] Object]
-    ^{:static true}
-    [expt [Object Object] Object]
-    ^{:static true}
-    [sqrt [Object] Object]
-    ^{:static true}
-    [null_context [Object] Object]
-    ^{:static true}
-    [list_mv_context_formats [] Object]
-    ^{:static true}
-    [odprime [Object Object] Object]
-    ^{:static true}
-    [values_of_object [Object Object] Object]
-    ^{:static true}
-    [lattice_coatoms [Object] Object]
-    ^{:static true}
-    [subcontext_p [Object Object] Object]
-    ^{:static true}
-    [reduce_f [Object Object Object] Object]
-    ^{:static true}
-    [random_contexts [Object Object] Object]
-    ^{:static true}
-    [interordinal_scale [Object] Object]
-    ^{:static true}
-    [interordinal_scale [Object Object Object] Object]
-    ^{:static true}
-    [interordinal_scale [Object Object Object Object] Object]
-    ^{:static true}
-    [list_mv_context_output_formats [] Object]
-    ^{:static true}
-    [order [conexp.fca.lattices.Lattice] Object]
-    ^{:static true}
-    [up_down_arrows [Object] Object]
-    ^{:static true}
-    [conexp_version [] Object]
-    ^{:static true}
-    [tails [Object] Object]
-    ^{:static true}
-    [sup [conexp.fca.lattices.Lattice] Object]
-    ^{:static true}
-    [base_set [conexp.fca.lattices.Lattice] Object]
-    ^{:static true}
-    [bond_p [Object Object Object] Object]
-    ^{:static true}
-    [sort_by_first [Object Object] Object]
-    ^{:static true}
-    [get_default_context_format [] Object]
-    ^{:static true}
-    [topological_sort [Object Object] Object]
-    ^{:static true}
-    [make_lattice_nc [Object Object] Object]
-    ^{:static true}
-    [make_lattice_nc [Object Object Object] Object]
-    ^{:static true}
-    [make_lattice_nc [Object Object Object Object] Object]
-    ^{:static true}
-    [quit [] Object]
-    ^{:static true}
-    [object_clarified_p [Object] Object]
-    ^{:static true}
-    [clarified_p [Object] Object]
-    ^{:static true}
-    [proper_subset_p [Object Object] Object]
-    ^{:static true}
-    [union [] Object]
-    ^{:static true}
-    [union [Object] Object]
-    ^{:static true}
-    [union [Object Object] Object]
-    ^{:static true}
-    [union [Object Object] Object]
-    ^{:static true}
-    [support [Object Object] Object]
-    ^{:static true}
-    [minimal_generating_subsets [Object Object] Object]
-    ^{:static true}
-    [write_context [Object Object Object] Object]
-    ^{:static true}
-    [write_context [Object Object] Object]
-    ^{:static true}
-    [all_closed_sets [Object Object] Object]
-    ^{:static true}
-    [all_closed_sets [Object Object Object] Object]
-    ^{:static true}
-    [select [Object Object] Object]
-    ^{:static true}
-    [partial_max [Object Object] Object]
-    ^{:static true}
-    [ordinal_scale [Object] Object]
-    ^{:static true}
-    [ordinal_scale [Object Object] Object]
-    ^{:static true}
-    [ordinal_scale [Object Object Object] Object]
-    ^{:static true}
-    [minimal_implication_set_p [Object] Object]
-    ^{:static true}
-    [context_composition [Object Object] Object]
-    ^{:static true}
-    [distinct_by_key [Object Object] Object]
-    ^{:static true}
-    [split_at_last [Object Object] Object]
-    ^{:static true}
-    [oprime [Object Object] Object]
-    ^{:static true}
-    [cross_product [Object Object] Object]
-    ^{:static true}
-    [nominal_scale [Object] Object]
-    ^{:static true}
-    [nominal_scale [Object Object] Object]
-    ^{:static true}
-    [directly_neighboured_p [Object Object Object] Object]
-    ^{:static true}
-    [__gt_Lattice [Object Object Object Object] Object]
-    ^{:static true}
-    [dual_lattice [Object] Object]
-    ^{:static true}
-    [read_layout [Object] Object]
-    ^{:static true}
-    [read_layout [Object Object] Object]
-    ^{:static true}
-    [project [Object Object] Object]
-    ^{:static true}
-    [map_invert [Object] Object]
-    ^{:static true}
-    [context_intersection [Object Object] Object]
-    ^{:static true}
-    [abs [Object] Object]
-    ^{:static true}
-    [all_bonds [Object Object] Object]
-    ^{:static true}
-    [list_layout_output_formats [] Object]
-    ^{:static true}
-    [attribute_clarified_p [Object] Object]
-    ^{:static true}
-    [implication_p [Object] Object]
-    ^{:static true}
-    [make_mv_context_from_matrix [Object Object Object] Object]
-    ^{:static true}
-    [follows_semantically_p [Object Object] Object]
-    ^{:static true}
-    [compatible_subcontext_p [Object Object] Object]
-    ^{:static true}
-    [exact_integer_sqrt [Object] Object]
-    ^{:static true}
-    [list_context_formats [] Object]
-    ^{:static true}
-    [make_implication [Object Object] Object]
-    ^{:static true}
-    [join [Object Object] Object]
-    ^{:static true}
-    [join [Object Object Object] Object]
-    ^{:static true}
-    [standard_context [Object] Object]
-    ^{:static true}
-    [up_arrows [Object] Object]
-    ^{:static true}
-    [reflexive_transitive_closure [Object Object] Object]
-    ^{:static true}
-    [set_default_context_format_f [Object] Object]
-    ^{:static true}
-    [partial_min [Object Object] Object]
-    ^{:static true}
-    [objects [Object] Object]
-    ^{:static true}
-    [scale_mv_context [Object Object] Object]
-    ^{:static true}
-    [scale_mv_context [Object Object Object] Object]
-    ^{:static true}
-    [set_default_mv_context_format_f [Object] Object]
-    ^{:static true}
-    [incident_p [Object Object Object] Object]
-    ^{:static true}
-    [split_at_first [Object Object] Object]
-    ^{:static true}
-    [rand_context [Object Object] Object]
-    ^{:static true}
-    [rand_context [Object Object Object] Object]
-    ^{:static true}
-    [object_reduced_p [Object] Object]
-    ^{:static true}
-    [reduced_p [Object] Object]
-    ^{:static true}
-    [make_context_from_matrix [Object Object Object] Object]
-    ^{:static true}
-    [test_conexp [] Object]
-    ^{:static true}
-    [test_conexp [Object] Object]
-    ^{:static true}
-    [list_mv_context_input_formats [] Object]
-    ^{:static true}
-    [biordinal_scale [Object Object] Object]
-    ^{:static true}
-    [biordinal_scale [Object Object Object Object Object] Object]
-    ^{:static true}
-    [mv_context_to_string [Object] Object]
-    ^{:static true}
-    [mv_context_to_string [Object Object Object] Object]
-    ^{:static true}
-    [context_size [Object] Object]
-    ^{:static true}
-    [has_lattice_order_p [Object] Object]
-    ^{:static true}
-    [lattice_zero [Object] Object]
-    ^{:static true}
-    [proper_premises [Object] Object]
-    ^{:static true}
-    [sort_by_second [Object Object] Object]
-    ^{:static true}
-    [__gt_Formal_Context [Object Object Object] Object]
-    ^{:static true}
-    [lattice_doubly_irreducibles [Object] Object]
-    ^{:static true}
-    [invert_context [Object] Object]
-    ^{:static true}
-    [modular_p [Object] Object]
-    ^{:static true}
-    [subsets [Object] Object]
-    ^{:static true}
-    [premise [Object] Object]
-    ^{:static true}
-    [div [Object Object] Object]
-    ^{:static true}
-    [lectic__lt__i [Object Object Object Object] Object]
-    ^{:static true}
-    [down_arrows [Object] Object]
-    ^{:static true}
-    [lattice_lower_neighbours [Object Object] Object]
-    ^{:static true}
-    [unsupported_operation [Object Object] Object]
-    ^{:static true}
-    [first_non_nil [Object] Object]
-    ^{:static true}
-    [lattice_one [Object] Object]
-    ^{:static true}
-    [with_str_out [Object Object] Object]
-    ^{:static true}
-    [incidence [Object] Object]
-    ^{:static true}
-    [make_handler [Object Object] Object]
-    ^{:static true}
-    [lattice_atoms [Object] Object]
-    ^{:static true}
-    [proper_premise_p [Object Object] Object]
-    ^{:static true}
-    [ask [Object Object] Object]
-    ^{:static true}
-    [make_context [Object Object Object] Object]
-    ^{:static true}
-    [list_layout_input_formats [] Object]
-    ^{:static true}
-    [write_mv_context [Object Object Object] Object]
-    ^{:static true}
-    [write_mv_context [Object Object] Object]
-    ^{:static true}
-    [rename_objects [Object Object] Object]
-    ^{:static true}
-    [subset_p [Object Object] java.lang.Boolean]
-    ^{:static true}
-    [compatible_subcontexts [Object] Object]
-    ^{:static true}
-    [ensure_seq [Object] Object]
-    ^{:static true}
-    [rename_attributes [Object Object] Object]
-    ^{:static true}
-    [sound_implication_set_p [Object Object] Object]
-    ^{:static true}
-    [latex [Object] Object]
-    ^{:static true}
-    [latex [Object Object] Object]
-    ^{:static true}
-    [context_to_string [Object] java.lang.String]
-    ^{:static true}
-    [context_to_string [Object Object Object] java.lang.String]
-    ^{:static true}
-    [attribute_concept [Object Object] Object]
-    ^{:static true}
-    [set_of_range [Object] Object]
-    ^{:static true}
-    [set_of_range [Object Object] Object]
-    ^{:static true}
-    [set_of_range [Object Object Object] Object]
-    ^{:static true}
-    [_lt__eq__gt_ [Object Object] Object]
-    ^{:static true}
-    [context_product [Object Object] Object]
-    ^{:static true}
-    [concept_lattice [Object] Object]
-    ^{:static true}
-    [distributive_p [Object] Object]
-    ^{:static true}
-    [dichotomic_scale [Object] Object]
-    ^{:static true}
-    [clop_by_implications [Object] Object]
-    ^{:static true}
-    [inf [conexp.fca.lattices.Lattice] Object]
-    ^{:static true}
-    [get_default_mv_context_format [] Object]
-    ^{:static true}
-    [make_context_nc [Object Object Object] Object]
-    ^{:static true}
-    [floor [Object] Object]
-    ^{:static true}
-    [improve_basic_order [Object Object] Object]
-    ^{:static true}
-    [concepts [Object] Object]
-    ^{:static true}
-    [disjoint_union [Object Object] Object]
-    ^{:static true}
-    [make_mv_context [Object Object Object] Object]
-    ^{:static true}
-    [read_lattice [Object] Object]
-    ^{:static true}
-    [read_lattice [Object Object] Object]
-    ^{:static true}
-    [confidence [Object Object] Object]
-    ^{:static true}
-    [write_layout [Object Object Object] Object]
-    ^{:static true}
-    [write_layout [Object Object] Object]
-    ^{:static true}
-    [clarify_objects [Object] Object]
-    ^{:static true}
-    [make_mv_context_nc [Object Object Object] Object]
-    ^{:static true}
-    [map_by_fn [Object Object] Object]
-    ^{:static true}
-    [object_derivation [Object Object] Object]
-    ^{:static true}
-    [context_p [Object] Object]
-    ^{:static true}
-    [intersection [Object] Object]
-    ^{:static true}
-    [intersection [Object Object] Object]
-    ^{:static true}
-    [intersection [Object Object] Object]
-    ^{:static true}
-    [round [Object] Object]
-    ^{:static true}
-    [inits [Object] Object]
-    ^{:static true}
-    [stem_base_from_base [Object] Object]
-    ^{:static true}
-    [smallest_bond [Object Object Object] Object]
-    ^{:static true}
-    [extents [Object] Object]
-    ^{:static true}
-    [complete_implication_set_p [Object Object] Object]
-    ^{:static true}
-    [clojure_type [Object] Object]
-    ^{:static true}
-    [gcd [Object Object] Object]
-    ^{:static true}
-    [read_mv_context [Object] Object]
-    ^{:static true}
-    [read_mv_context [Object Object] Object]
-    ^{:static true}
-    [illegal_state [Object Object] Object]
-    ^{:static true}
-    [list_lattice_output_formats [] Object]
-    ^{:static true}
-    [context_attribute_closure [Object Object] Object]
-    ^{:static true}
-    [list_layout_formats [] Object]
-    ^{:static true}
-    [name_with_attributes [Object Object] Object]
-    ^{:static true}
-    [next_closed_set [Object Object Object] Object]
-    ^{:static true}
-    [available_formats [Object] Object]
-    ^{:static true}
-    [frequent_closed_itemsets [Object Object] Object]
-    ^{:static true}
-    [context_transitive_closure [Object] Object]
-    ^{:static true}
-    [singleton_p [Object] Object]
-    ^{:static true}
-    [values_of_attribute [Object Object] Object]
-    ^{:static true}
-    [adprime [Object Object] Object]
-    ^{:static true}
-    [adiag_context [Object] Object]
-    ^{:static true}
-    [illegal_argument [Object Object] Object]
-    ^{:static true}
-    [all_shared_intents [Object Object] Object]
-    ^{:static true}
-    [diag_context [Object] Object]
-    ^{:static true}
-    [context_semiproduct [Object Object] Object]
-    ^{:static true}
-    [list_lattice_input_formats [] Object]
-    ^{:static true}
-    [next_closed_set_in_family [Object Object Object Object] Object]
-    ^{:static true}
-    [context_xia_product [Object Object] Object]
-    ^{:static true}
-    [difference [Object] Object]
-    ^{:static true}
-    [difference [Object Object] Object]
-    ^{:static true}
-    [difference [Object Object] Object]
-    ^{:static true}
-    [get_default_lattice_format [] Object]
-    ^{:static true}
-    [pseudo_close_under_implications [Object Object] Object]
-    ^{:static true}
-    [rename [Object Object] Object]
-    ^{:static true}
-    [random_context [Object Object] Object]
-    ^{:static true}
-    [random_context [Object Object Object] Object]
-    ^{:static true}
-    [aprime [Object Object] Object]
-    ^{:static true}
-    [transitive_reduction [Object] Object]
-    ^{:static true}
-    [transitive_reduction [Object Object] Object]
-    ^{:static true}
-    [lectic__lt_ [Object Object Object] Object]
-    ^{:static true}
-    [concept_p [Object Object] Object]
-    ^{:static true}
-    [equivalent_implications_p [Object Object] Object]
-    ^{:static true}
-    [context_subposition [Object Object] Object]
-    ^{:static true}
-    [has_version_p [Object] Object]
-    ^{:static true}
-    [not_yet_implemented [] Object]
-    ^{:static true}
-    [all_closed_sets_in_family [Object Object Object] Object]
-    ^{:static true}
-    [all_closed_sets_in_family [Object Object Object Object] Object]
-    ^{:static true}
-    [restrict_concept [Object Object] Object]
-    ^{:static true}
-    [context_union [Object Object] Object]
-    ^{:static true}
-    [all_bonds_by_shared_intents [Object Object] Object]
-    ^{:static true}
-    [make_lattice [Object Object] Object]
-    ^{:static true}
-    [list_lattice_formats [] Object]
-    ^{:static true}
-    [one_context [Object] Object]
-    ^{:static true}
-    [write_lattice [Object Object Object] Object]
-    ^{:static true}
-    [write_lattice [Object Object] Object]
-    ^{:static true}
-    [dissoc_in [Object Object] Object]
-    ^{:static true}
-    [reduce_context [Object] Object]
-    ^{:static true}
-    [dual_context [Object] Object]
-    ^{:static true}
-    [lcm [Object Object] Object]
-    ^{:static true}
-    [pseudo_intents [Object] Object]
-    ^{:static true}
-    [luxenburger_basis [Object Object Object] Object]
-    ^{:static true}
-    [now [] Object]
-    ^{:static true}
-    [implication_context [Object] Object]
-    ^{:static true}
-    [pseudo_clop_by_implications [Object] Object]
-    ^{:static true}
-    [attributes [Object] Object]
-    ^{:static true}
-    [seqable_p [Object] Object]
-    ^{:static true}
-    [minimum_set_covers [Object Object] Object]
-    ^{:static true}
-    [intents [Object] Object]
-    ^{:static true}
-    [graph_of_function_p [Object Object Object] Object]
-    ^{:static true}
-    [clarify_attributes [Object] Object]
-    ^{:static true}
-    [new_by_name [Object Object] Object]
-    ^{:static true}
-    [explore_attributes [Object Object] Object]
-    ^{:static true}
-    [proper_conclusion [Object Object] Object]
-    ^{:static true}
-    [__gt_Implication [Object Object] Object]
-    ^{:static true}
-    [list_context_output_formats [] Object]
-    ^{:static true}
-    [object_concept [Object Object] Object]
-    ^{:static true}
-    [context_from_clop [Object Object] Object]
-    ^{:static true}
-    [context_apposition [Object Object] Object]
-    ^{:static true}
-    [rename_keys [Object Object] Object]
-    ^{:static true}
-    [set_default_lattice_format_f [Object] Object]
-    ^{:static true}
-    [proper_premise_implications [Object] Object]
-    ^{:static true}
-    [reduce_objects [Object] Object]
-    ^{:static true}
-    [lattice_upper_neighbours [Object Object] Object]
-    ^{:static true}
-    [warn [Object] Object]
-    ^{:static true}
-    [context_disjoint_union [Object Object] Object]
-    ^{:static true}
-    [__gt_Many_Valued_Context [Object Object Object] Object]
-    ^{:static true}
-    [context_sum [Object Object] Object]
-    ^{:static true}
-    [read_context [Object] Object]
-    ^{:static true}
-    [read_context [Object Object] Object]
-    ^{:static true}
-    [close_under_implications [Object Object] Object]
-    ^{:static true}
-    [attribute_derivation [Object Object] Object]
-    ^{:static true}
-    [reduce_attributes [Object] Object]
-    ^{:static true}
-    [immigrate [Object Object] Object]
-    ^{:static true}
-    [stem_base [Object] Object]
-    ^{:static true}
-    [stem_base [Object Object] Object]
-    ^{:static true}
-    [proper_superset_p [Object Object] Object]
-    ^{:static true}
-    [print_context [Object Object] Object]
-    ^{:static true}
-    [ensure_length [Object Object] Object]
-    ^{:static true}
-    [ensure_length [Object Object Object] Object]
-    ^{:static true}
-    [respects_p [Object Object] Object]
-    ^{:static true}
-    [to_set [Object] Object]
-    ^{:static true}
-    [direct_upper_concepts [Object Object] Object]
-    ^{:static true}
-    [conclusion [Object] Object]
-    ^{:static true}
-    [ceil [Object] Object]
-    ^{:static true}
-    [lattice_inf_irreducibles [Object] Object]
-    ^{:static true}
-    [index [Object Object] Object]
-    ^{:static true}
-    [clarify_context [Object] Object]
-    ^{:static true}
-    [get_default_layout_format [] Object]
-    ^{:static true}
-    [direct_lower_concepts [Object Object] Object]
-    ^{:static true}
-    [superset_p [Object Object] java.lang.Boolean]
-    ^{:static true}
-    [set_default_layout_format_f [Object] Object]
-    ^{:static true}
-    [inf_additive_layout [Object] Object]
-    ^{:static true}
-    [holds_p [Object Object] Object]
-    ^{:static true}
-    [lattice_sup_irreducibles [Object] Object]
-    ^{:static true}
-    [hash_combine_hash [Object Object] Object])))
- (clojure.core/import 'conexp.fca.contexts.Context)
- (clojure.core/import 'conexp.fca.lattices.Lattice)
- (clojure.core/defn
-  conexp-clj-zip
-  ([seq-1 seq-2] (clojure.core/apply conexp.main/zip [seq-1 seq-2])))
- (clojure.core/defn
-  conexp-clj-attribute_reduced_p
-  ([ctx] (clojure.core/apply conexp.main/attribute-reduced? [ctx])))
- (clojure.core/defn
-  conexp-clj-list_context_input_formats
-  ([] (clojure.core/apply conexp.main/list-context-input-formats [])))
- (clojure.core/defn
-  conexp-clj-transitive_closure
-  ([pairs]
-   (clojure.core/apply conexp.main/transitive-closure [pairs])))
- (clojure.core/defn
-  conexp-clj-default_handler
-  ([ctx known impl]
-   (clojure.core/apply conexp.main/default-handler [ctx known impl])))
- (clojure.core/defn
-  conexp-clj-context_object_closure
-  ([ctx set-of-objects]
-   (clojure.core/apply
-    conexp.main/context-object-closure
-    [ctx set-of-objects])))
- (clojure.core/defn
-  conexp-clj-yes_or_no_p
-  ([question] (clojure.core/apply conexp.main/yes-or-no? [question])))
- (clojure.core/defn
-  conexp-clj-expt
-  ([a b] (clojure.core/apply conexp.main/expt [a b])))
- (clojure.core/defn
-  conexp-clj-sqrt
-  ([n] (clojure.core/apply conexp.main/sqrt [n])))
- (clojure.core/defn
-  conexp-clj-null_context
-  ([base-set]
-   (clojure.core/apply conexp.main/null-context [base-set])))
- (clojure.core/defn
-  conexp-clj-list_mv_context_formats
-  ([] (clojure.core/apply conexp.main/list-mv-context-formats [])))
- (clojure.core/defn
-  conexp-clj-odprime
-  ([ctx set-of-objects]
-   (clojure.core/apply conexp.main/odprime [ctx set-of-objects])))
- (clojure.core/defn
-  conexp-clj-values_of_object
-  ([mv-ctx g]
-   (clojure.core/apply conexp.main/values-of-object [mv-ctx g])))
- (clojure.core/defn
-  conexp-clj-lattice_coatoms
-  ([lat] (clojure.core/apply conexp.main/lattice-coatoms [lat])))
- (clojure.core/defn
-  conexp-clj-subcontext_p
-  ([ctx-1 ctx-2]
-   (clojure.core/apply conexp.main/subcontext? [ctx-1 ctx-2])))
- (clojure.core/defn
-  conexp-clj-reduce_f
-  ([fn initial-value coll]
-   (clojure.core/apply conexp.main/reduce! [fn initial-value coll])))
- (clojure.core/defn
-  conexp-clj-random_contexts
-  ([number upper-limit]
-   (clojure.core/apply
-    conexp.main/random-contexts
-    [number upper-limit])))
- (clojure.core/defn
-  conexp-clj-interordinal_scale
-  ([values]
-   (clojure.core/apply conexp.main/interordinal-scale [values]))
-  ([values <= >=]
-   (clojure.core/apply conexp.main/interordinal-scale [values <= >=]))
-  ([values others <= >=]
-   (clojure.core/apply
-    conexp.main/interordinal-scale
-    [values others <= >=])))
- (clojure.core/defn
-  conexp-clj-list_mv_context_output_formats
-  ([]
-   (clojure.core/apply conexp.main/list-mv-context-output-formats [])))
- (clojure.core/defn
-  conexp-clj-order
-  ([^Lattice lattice]
-   (clojure.core/apply conexp.main/order [^Lattice lattice])))
- (clojure.core/defn
-  conexp-clj-up_down_arrows
-  ([ctx] (clojure.core/apply conexp.main/up-down-arrows [ctx])))
- (clojure.core/defn
-  conexp-clj-conexp_version
-  ([] (clojure.core/apply conexp.main/conexp-version [])))
- (clojure.core/defn
-  conexp-clj-tails
-  ([sqn] (clojure.core/apply conexp.main/tails [sqn])))
- (clojure.core/defn
-  conexp-clj-sup
-  ([^Lattice lattice]
-   (clojure.core/apply conexp.main/sup [^Lattice lattice])))
- (clojure.core/defn
-  conexp-clj-base_set
-  ([^Lattice lattice]
-   (clojure.core/apply conexp.main/base-set [^Lattice lattice])))
- (clojure.core/defn
-  conexp-clj-bond_p
-  ([ctx-1 ctx-2 ctx]
-   (clojure.core/apply conexp.main/bond? [ctx-1 ctx-2 ctx])))
- (clojure.core/defn
-  conexp-clj-sort_by_first
-  ([x y] (clojure.core/apply conexp.main/sort-by-first [x y])))
- (clojure.core/defn
-  conexp-clj-get_default_context_format
-  ([] (clojure.core/apply conexp.main/get-default-context-format [])))
- (clojure.core/defn
-  conexp-clj-topological_sort
-  ([comp coll]
-   (clojure.core/apply conexp.main/topological-sort [comp coll])))
- (clojure.core/defn
-  conexp-clj-make_lattice_nc
-  ([base-set order-function]
-   (clojure.core/apply
-    conexp.main/make-lattice-nc
-    [base-set order-function]))
-  ([base-set inf sup]
-   (clojure.core/apply conexp.main/make-lattice-nc [base-set inf sup]))
-  ([base-set order-function inf sup]
-   (clojure.core/apply
-    conexp.main/make-lattice-nc
-    [base-set order-function inf sup])))
- (clojure.core/defn
-  conexp-clj-quit
-  ([] (clojure.core/apply conexp.main/quit [])))
- (clojure.core/defn
-  conexp-clj-object_clarified_p
-  ([ctx] (clojure.core/apply conexp.main/object-clarified? [ctx])))
- (clojure.core/defn
-  conexp-clj-clarified_p
-  ([ctx] (clojure.core/apply conexp.main/clarified? [ctx])))
- (clojure.core/defn
-  conexp-clj-proper_subset_p
-  ([set-1 set-2]
-   (clojure.core/apply conexp.main/proper-subset? [set-1 set-2])))
- (clojure.core/defn
-  conexp-clj-union
-  ([] (clojure.core/apply conexp.main/union []))
-  ([s1] (clojure.core/apply conexp.main/union [s1]))
-  ([s1 s2] (clojure.core/apply conexp.main/union [s1 s2]))
-  ([s1 s2 & sets]
-   (clojure.core/apply
-    conexp.main/union
-    (clojure.core/vec (clojure.core/list* s1 s2 sets)))))
- (clojure.core/defn
-  conexp-clj-support
-  ([thing ctx] (clojure.core/apply conexp.main/support [thing ctx])))
- (clojure.core/defn
-  conexp-clj-minimal_generating_subsets
-  ([clop A]
-   (clojure.core/apply
-    conexp.main/minimal-generating-subsets
-    [clop A])))
- (clojure.core/defn
-  conexp-clj-write_context
-  ([format context file]
-   (clojure.core/apply
-    conexp.main/write-context
-    [format context file]))
-  ([context file]
-   (clojure.core/apply conexp.main/write-context [context file])))
- (clojure.core/defn
-  conexp-clj-all_closed_sets
-  ([base clop]
-   (clojure.core/apply conexp.main/all-closed-sets [base clop]))
-  ([base clop initial]
-   (clojure.core/apply
-    conexp.main/all-closed-sets
-    [base clop initial])))
- (clojure.core/defn
-  conexp-clj-select
-  ([pred xset] (clojure.core/apply conexp.main/select [pred xset])))
- (clojure.core/defn
-  conexp-clj-partial_max
-  ([<= xs] (clojure.core/apply conexp.main/partial-max [<= xs])))
- (clojure.core/defn
-  conexp-clj-ordinal_scale
-  ([values] (clojure.core/apply conexp.main/ordinal-scale [values]))
-  ([values <=]
-   (clojure.core/apply conexp.main/ordinal-scale [values <=]))
-  ([values others <=]
-   (clojure.core/apply conexp.main/ordinal-scale [values others <=])))
- (clojure.core/defn
-  conexp-clj-minimal_implication_set_p
-  ([impl-set]
-   (clojure.core/apply
-    conexp.main/minimal-implication-set?
-    [impl-set])))
- (clojure.core/defn
-  conexp-clj-context_composition
-  ([ctx-1 ctx-2]
-   (clojure.core/apply conexp.main/context-composition [ctx-1 ctx-2])))
- (clojure.core/defn
-  conexp-clj-distinct_by_key
-  ([sequence key]
-   (clojure.core/apply conexp.main/distinct-by-key [sequence key])))
- (clojure.core/defn
-  conexp-clj-split_at_last
-  ([predicate sequence]
-   (clojure.core/apply
-    conexp.main/split-at-last
-    [predicate sequence])))
- (clojure.core/defn
-  conexp-clj-oprime
-  ([ctx objects]
-   (clojure.core/apply conexp.main/oprime [ctx objects])))
- (clojure.core/defn
-  conexp-clj-cross_product
-  ([& sets]
-   (clojure.core/apply
-    conexp.main/cross-product
-    (clojure.core/vec (clojure.core/list* sets)))))
- (clojure.core/defn
-  conexp-clj-nominal_scale
-  ([values] (clojure.core/apply conexp.main/nominal-scale [values]))
-  ([values others]
-   (clojure.core/apply conexp.main/nominal-scale [values others])))
- (clojure.core/defn
-  conexp-clj-directly_neighboured_p
-  ([lat x y]
-   (clojure.core/apply conexp.main/directly-neighboured? [lat x y])))
- (clojure.core/defn
-  conexp-clj-__gt_Lattice
-  ([base-set order-function inf sup]
-   (clojure.core/apply
-    conexp.main/->Lattice
-    [base-set order-function inf sup])))
- (clojure.core/defn
-  conexp-clj-dual_lattice
-  ([lat] (clojure.core/apply conexp.main/dual-lattice [lat])))
- (clojure.core/defn
-  conexp-clj-read_layout
-  ([file] (clojure.core/apply conexp.main/read-layout [file]))
-  ([file explicit-format]
-   (clojure.core/apply
-    conexp.main/read-layout
-    [file explicit-format])))
- (clojure.core/defn
-  conexp-clj-project
-  ([xrel ks] (clojure.core/apply conexp.main/project [xrel ks])))
- (clojure.core/defn
-  conexp-clj-map_invert
-  ([m] (clojure.core/apply conexp.main/map-invert [m])))
- (clojure.core/defn
-  conexp-clj-context_intersection
-  ([ctx1 ctx2]
-   (clojure.core/apply conexp.main/context-intersection [ctx1 ctx2])))
- (clojure.core/defn
-  conexp-clj-abs
-  ([n] (clojure.core/apply conexp.main/abs [n])))
- (clojure.core/defn
-  conexp-clj-all_bonds
-  ([ctx-1 ctx-2]
-   (clojure.core/apply conexp.main/all-bonds [ctx-1 ctx-2])))
- (clojure.core/defn
-  conexp-clj-list_layout_output_formats
-  ([] (clojure.core/apply conexp.main/list-layout-output-formats [])))
- (clojure.core/defn
-  conexp-clj-attribute_clarified_p
-  ([ctx] (clojure.core/apply conexp.main/attribute-clarified? [ctx])))
- (clojure.core/defn
-  conexp-clj-implication_p
-  ([thing] (clojure.core/apply conexp.main/implication? [thing])))
- (clojure.core/defn
-  conexp-clj-make_mv_context_from_matrix
-  ([objects attributes values]
-   (clojure.core/apply
-    conexp.main/make-mv-context-from-matrix
-    [objects attributes values])))
- (clojure.core/defn
-  conexp-clj-follows_semantically_p
-  ([implication implications]
-   (clojure.core/apply
-    conexp.main/follows-semantically?
-    [implication implications])))
- (clojure.core/defn
-  conexp-clj-compatible_subcontext_p
-  ([ctx-1 ctx-2]
-   (clojure.core/apply
-    conexp.main/compatible-subcontext?
-    [ctx-1 ctx-2])))
- (clojure.core/defn
-  conexp-clj-exact_integer_sqrt
-  ([n] (clojure.core/apply conexp.main/exact-integer-sqrt [n])))
- (clojure.core/defn
-  conexp-clj-list_context_formats
-  ([] (clojure.core/apply conexp.main/list-context-formats [])))
- (clojure.core/defn
-  conexp-clj-make_implication
-  ([premise conclusion]
-   (clojure.core/apply
-    conexp.main/make-implication
-    [premise conclusion])))
- (clojure.core/defn
-  conexp-clj-join
-  ([xrel yrel] (clojure.core/apply conexp.main/join [xrel yrel]))
-  ([xrel yrel km]
-   (clojure.core/apply conexp.main/join [xrel yrel km])))
- (clojure.core/defn
-  conexp-clj-standard_context
-  ([lat] (clojure.core/apply conexp.main/standard-context [lat])))
- (clojure.core/defn
-  conexp-clj-up_arrows
-  ([ctx] (clojure.core/apply conexp.main/up-arrows [ctx])))
- (clojure.core/defn
-  conexp-clj-reflexive_transitive_closure
-  ([base-set pairs]
-   (clojure.core/apply
-    conexp.main/reflexive-transitive-closure
-    [base-set pairs])))
- (clojure.core/defn
-  conexp-clj-set_default_context_format_f
-  ([format__3361__auto__]
-   (clojure.core/apply
-    conexp.main/set-default-context-format!
-    [format__3361__auto__])))
- (clojure.core/defn
-  conexp-clj-partial_min
-  ([<= xs] (clojure.core/apply conexp.main/partial-min [<= xs])))
- (clojure.core/defn
-  conexp-clj-objects
-  ([ctx] (clojure.core/apply conexp.main/objects [ctx])))
- (clojure.core/defn
-  conexp-clj-scale_mv_context
-  ([mv-ctx scales]
-   (clojure.core/apply conexp.main/scale-mv-context [mv-ctx scales]))
-  ([mv-ctx scales default]
-   (clojure.core/apply
-    conexp.main/scale-mv-context
-    [mv-ctx scales default])))
- (clojure.core/defn
-  conexp-clj-set_default_mv_context_format_f
-  ([format__3361__auto__]
-   (clojure.core/apply
-    conexp.main/set-default-mv-context-format!
-    [format__3361__auto__])))
- (clojure.core/defn
-  conexp-clj-incident_p
-  ([ctx g m] (clojure.core/apply conexp.main/incident? [ctx g m])))
- (clojure.core/defn
-  conexp-clj-split_at_first
-  ([predicate sequence]
-   (clojure.core/apply
-    conexp.main/split-at-first
-    [predicate sequence])))
- (clojure.core/defn
-  conexp-clj-rand_context
-  ([base-set fill-rate]
-   (clojure.core/apply conexp.main/rand-context [base-set fill-rate]))
-  ([objects attributes fill-rate]
-   (clojure.core/apply
-    conexp.main/rand-context
-    [objects attributes fill-rate])))
- (clojure.core/defn
-  conexp-clj-object_reduced_p
-  ([ctx] (clojure.core/apply conexp.main/object-reduced? [ctx])))
- (clojure.core/defn
-  conexp-clj-reduced_p
-  ([ctx] (clojure.core/apply conexp.main/reduced? [ctx])))
- (clojure.core/defn
-  conexp-clj-make_context_from_matrix
-  ([G M bits]
-   (clojure.core/apply
-    conexp.main/make-context-from-matrix
-    [G M bits])))
- (clojure.core/defn
-  conexp-clj-test_conexp
-  ([] (clojure.core/apply conexp.main/test-conexp []))
-  ([with-contrib?]
-   (clojure.core/apply conexp.main/test-conexp [with-contrib?])))
- (clojure.core/defn
-  conexp-clj-list_mv_context_input_formats
-  ([]
-   (clojure.core/apply conexp.main/list-mv-context-input-formats [])))
- (clojure.core/defn
-  conexp-clj-biordinal_scale
-  ([values n]
-   (clojure.core/apply conexp.main/biordinal-scale [values n]))
-  ([values others n <= >=]
-   (clojure.core/apply
-    conexp.main/biordinal-scale
-    [values others n <= >=])))
- (clojure.core/defn
-  conexp-clj-mv_context_to_string
-  ([mv-ctx]
-   (clojure.core/apply conexp.main/mv-context-to-string [mv-ctx]))
-  ([mv-ctx order-on-objects order-on-attributes]
-   (clojure.core/apply
-    conexp.main/mv-context-to-string
-    [mv-ctx order-on-objects order-on-attributes])))
- (clojure.core/defn
-  conexp-clj-context_size
-  ([ctx] (clojure.core/apply conexp.main/context-size [ctx])))
- (clojure.core/defn
-  conexp-clj-has_lattice_order_p
-  ([lat] (clojure.core/apply conexp.main/has-lattice-order? [lat])))
- (clojure.core/defn
-  conexp-clj-lattice_zero
-  ([lat] (clojure.core/apply conexp.main/lattice-zero [lat])))
- (clojure.core/defn
-  conexp-clj-proper_premises
-  ([ctx] (clojure.core/apply conexp.main/proper-premises [ctx])))
- (clojure.core/defn
-  conexp-clj-sort_by_second
-  ([x y] (clojure.core/apply conexp.main/sort-by-second [x y])))
- (clojure.core/defn
-  conexp-clj-__gt_Formal_Context
-  ([objects attributes incidence]
-   (clojure.core/apply
-    conexp.main/->Formal-Context
-    [objects attributes incidence])))
- (clojure.core/defn
-  conexp-clj-lattice_doubly_irreducibles
-  ([lat]
-   (clojure.core/apply conexp.main/lattice-doubly-irreducibles [lat])))
- nil
- (clojure.core/defn
-  conexp-clj-invert_context
-  ([ctx] (clojure.core/apply conexp.main/invert-context [ctx])))
- (clojure.core/defn
-  conexp-clj-modular_p
-  ([lat] (clojure.core/apply conexp.main/modular? [lat])))
- (clojure.core/defn
-  conexp-clj-subsets
-  ([set] (clojure.core/apply conexp.main/subsets [set])))
- (clojure.core/defn
-  conexp-clj-premise
-  ([thing] (clojure.core/apply conexp.main/premise [thing])))
- (clojure.core/defn
-  conexp-clj-div
-  ([a b] (clojure.core/apply conexp.main/div [a b])))
- (clojure.core/defn
-  conexp-clj-lectic__lt__i
-  ([base i A B]
-   (clojure.core/apply conexp.main/lectic-<_i [base i A B])))
- (clojure.core/defn
-  conexp-clj-down_arrows
-  ([ctx] (clojure.core/apply conexp.main/down-arrows [ctx])))
- (clojure.core/defn
-  conexp-clj-lattice_lower_neighbours
-  ([lat y]
-   (clojure.core/apply conexp.main/lattice-lower-neighbours [lat y])))
- (clojure.core/defn
-  conexp-clj-unsupported_operation
-  ([& strings]
-   (clojure.core/apply
-    conexp.main/unsupported-operation
-    (clojure.core/vec (clojure.core/list* strings)))))
- (clojure.core/defn
-  conexp-clj-first_non_nil
-  ([seq] (clojure.core/apply conexp.main/first-non-nil [seq])))
- (clojure.core/defn
-  conexp-clj-lattice_one
-  ([lat] (clojure.core/apply conexp.main/lattice-one [lat])))
- (clojure.core/defn
-  conexp-clj-with_str_out
-  ([& body]
-   (clojure.core/apply
-    conexp.main/with-str-out
-    (clojure.core/vec (clojure.core/list* body)))))
- (clojure.core/defn
-  conexp-clj-incidence
-  ([ctx] (clojure.core/apply conexp.main/incidence [ctx])))
- (clojure.core/defn
-  conexp-clj-make_handler
-  ([& options__201__auto__]
-   (clojure.core/apply
-    conexp.main/make-handler
-    (clojure.core/vec (clojure.core/list* options__201__auto__)))))
- (clojure.core/defn
-  conexp-clj-lattice_atoms
-  ([lat] (clojure.core/apply conexp.main/lattice-atoms [lat])))
- (clojure.core/defn
-  conexp-clj-proper_premise_p
-  ([ctx A] (clojure.core/apply conexp.main/proper-premise? [ctx A])))
- (clojure.core/defn
-  conexp-clj-ask
-  ([prompt read & preds-and-fail-messages]
-   (clojure.core/apply
-    conexp.main/ask
-    (clojure.core/vec
-     (clojure.core/list* prompt read preds-and-fail-messages)))))
- (clojure.core/defn
-  conexp-clj-make_context
-  ([objects attributes incidence]
-   (clojure.core/apply
-    conexp.main/make-context
-    [objects attributes incidence])))
- (clojure.core/defn
-  conexp-clj-list_layout_input_formats
-  ([] (clojure.core/apply conexp.main/list-layout-input-formats [])))
- (clojure.core/defn
-  conexp-clj-write_mv_context
-  ([format mv-context file]
-   (clojure.core/apply
-    conexp.main/write-mv-context
-    [format mv-context file]))
-  ([mv-context file]
-   (clojure.core/apply
-    conexp.main/write-mv-context
-    [mv-context file])))
- (clojure.core/defn
-  conexp-clj-rename_objects
-  ([ctx old-to-new]
-   (clojure.core/apply conexp.main/rename-objects [ctx old-to-new])))
- (clojure.core/defn
-  conexp-clj-subset_p
-  ([set1 set2] (clojure.core/apply conexp.main/subset? [set1 set2])))
- (clojure.core/defn
-  conexp-clj-compatible_subcontexts
-  ([ctx]
-   (clojure.core/apply conexp.main/compatible-subcontexts [ctx])))
- (clojure.core/defn
-  conexp-clj-ensure_seq
-  ([x] (clojure.core/apply conexp.main/ensure-seq [x])))
- (clojure.core/defn
-  conexp-clj-rename_attributes
-  ([ctx old-to-new]
-   (clojure.core/apply
-    conexp.main/rename-attributes
-    [ctx old-to-new])))
- (clojure.core/defn
-  conexp-clj-sound_implication_set_p
-  ([ctx impl-set]
-   (clojure.core/apply
-    conexp.main/sound-implication-set?
-    [ctx impl-set])))
- (clojure.core/defn
-  conexp-clj-latex
-  ([this] (clojure.core/apply conexp.main/latex [this]))
-  ([this choice] (clojure.core/apply conexp.main/latex [this choice])))
- (clojure.core/defn
-  conexp-clj-context_to_string
-  ([ctx] (clojure.core/apply conexp.main/context-to-string [ctx]))
-  ([ctx order-on-objects order-on-attributes]
-   (clojure.core/apply
-    conexp.main/context-to-string
-    [ctx order-on-objects order-on-attributes])))
- (clojure.core/defn
-  conexp-clj-attribute_concept
-  ([ctx m] (clojure.core/apply conexp.main/attribute-concept [ctx m])))
- (clojure.core/defn
-  conexp-clj-set_of_range
-  ([end] (clojure.core/apply conexp.main/set-of-range [end]))
-  ([start end]
-   (clojure.core/apply conexp.main/set-of-range [start end]))
-  ([start end step]
-   (clojure.core/apply conexp.main/set-of-range [start end step])))
- (clojure.core/defn
-  conexp-clj-_lt__eq__gt_
-  ([a b] (clojure.core/apply conexp.main/<=> [a b])))
- (clojure.core/defn
-  conexp-clj-context_product
-  ([ctx-1 ctx-2]
-   (clojure.core/apply conexp.main/context-product [ctx-1 ctx-2])))
- (clojure.core/defn
-  conexp-clj-concept_lattice
-  ([ctx] (clojure.core/apply conexp.main/concept-lattice [ctx])))
- (clojure.core/defn
-  conexp-clj-distributive_p
-  ([lat] (clojure.core/apply conexp.main/distributive? [lat])))
- (clojure.core/defn
-  conexp-clj-dichotomic_scale
-  ([values]
-   (clojure.core/apply conexp.main/dichotomic-scale [values])))
- (clojure.core/defn
-  conexp-clj-clop_by_implications
-  ([implications]
-   (clojure.core/apply
-    conexp.main/clop-by-implications
-    [implications])))
- (clojure.core/defn
-  conexp-clj-inf
-  ([^Lattice lattice]
-   (clojure.core/apply conexp.main/inf [^Lattice lattice])))
- (clojure.core/defn
-  conexp-clj-get_default_mv_context_format
-  ([]
-   (clojure.core/apply conexp.main/get-default-mv-context-format [])))
- (clojure.core/defn
-  conexp-clj-make_context_nc
-  ([objects attributes incidence]
-   (clojure.core/apply
-    conexp.main/make-context-nc
-    [objects attributes incidence])))
- (clojure.core/defn
-  conexp-clj-floor
-  ([n] (clojure.core/apply conexp.main/floor [n])))
- (clojure.core/defn
-  conexp-clj-improve_basic_order
-  ([base clop]
-   (clojure.core/apply conexp.main/improve-basic-order [base clop])))
- (clojure.core/defn
-  conexp-clj-concepts
-  ([ctx] (clojure.core/apply conexp.main/concepts [ctx])))
- (clojure.core/defn
-  conexp-clj-disjoint_union
-  ([& sets]
-   (clojure.core/apply
-    conexp.main/disjoint-union
-    (clojure.core/vec (clojure.core/list* sets)))))
- (clojure.core/defn
-  conexp-clj-make_mv_context
-  ([objects attributes incidence]
-   (clojure.core/apply
-    conexp.main/make-mv-context
-    [objects attributes incidence])))
- (clojure.core/defn
-  conexp-clj-read_lattice
-  ([file] (clojure.core/apply conexp.main/read-lattice [file]))
-  ([file explicit-format]
-   (clojure.core/apply
-    conexp.main/read-lattice
-    [file explicit-format])))
- (clojure.core/defn
-  conexp-clj-confidence
-  ([implication context]
-   (clojure.core/apply conexp.main/confidence [implication context])))
- (clojure.core/defn
-  conexp-clj-write_layout
-  ([format layout file]
-   (clojure.core/apply conexp.main/write-layout [format layout file]))
-  ([layout file]
-   (clojure.core/apply conexp.main/write-layout [layout file])))
- (clojure.core/defn
-  conexp-clj-clarify_objects
-  ([ctx] (clojure.core/apply conexp.main/clarify-objects [ctx])))
- (clojure.core/defn
-  conexp-clj-make_mv_context_nc
-  ([objects attributes incidence]
-   (clojure.core/apply
-    conexp.main/make-mv-context-nc
-    [objects attributes incidence])))
- (clojure.core/defn
-  conexp-clj-map_by_fn
-  ([function keys]
-   (clojure.core/apply conexp.main/map-by-fn [function keys])))
- (clojure.core/defn
-  conexp-clj-object_derivation
-  ([ctx objects]
-   (clojure.core/apply conexp.main/object-derivation [ctx objects])))
- (clojure.core/defn
-  conexp-clj-context_p
-  ([thing] (clojure.core/apply conexp.main/context? [thing])))
- (clojure.core/defn
-  conexp-clj-intersection
-  ([s1] (clojure.core/apply conexp.main/intersection [s1]))
-  ([s1 s2] (clojure.core/apply conexp.main/intersection [s1 s2]))
-  ([s1 s2 & sets]
-   (clojure.core/apply
-    conexp.main/intersection
-    (clojure.core/vec (clojure.core/list* s1 s2 sets)))))
- (clojure.core/defn
-  conexp-clj-round
-  ([n] (clojure.core/apply conexp.main/round [n])))
- (clojure.core/defn
-  conexp-clj-inits
-  ([sqn] (clojure.core/apply conexp.main/inits [sqn])))
- (clojure.core/defn
-  conexp-clj-stem_base_from_base
-  ([implications]
-   (clojure.core/apply
-    conexp.main/stem-base-from-base
-    [implications])))
- (clojure.core/defn
-  conexp-clj-smallest_bond
-  ([ctx-1 ctx-2 rel]
-   (clojure.core/apply conexp.main/smallest-bond [ctx-1 ctx-2 rel])))
- (clojure.core/defn
-  conexp-clj-extents
-  ([ctx] (clojure.core/apply conexp.main/extents [ctx])))
- (clojure.core/defn
-  conexp-clj-complete_implication_set_p
-  ([ctx impl-set]
-   (clojure.core/apply
-    conexp.main/complete-implication-set?
-    [ctx impl-set])))
- (clojure.core/defn
-  conexp-clj-clojure_type
-  ([thing] (clojure.core/apply conexp.main/clojure-type [thing])))
- (clojure.core/defn
-  conexp-clj-gcd
-  ([a b] (clojure.core/apply conexp.main/gcd [a b])))
- (clojure.core/defn
-  conexp-clj-read_mv_context
-  ([file] (clojure.core/apply conexp.main/read-mv-context [file]))
-  ([file explicit-format]
-   (clojure.core/apply
-    conexp.main/read-mv-context
-    [file explicit-format])))
- (clojure.core/defn
-  conexp-clj-illegal_state
-  ([& strings]
-   (clojure.core/apply
-    conexp.main/illegal-state
-    (clojure.core/vec (clojure.core/list* strings)))))
- nil
- (clojure.core/defn
-  conexp-clj-list_lattice_output_formats
-  ([] (clojure.core/apply conexp.main/list-lattice-output-formats [])))
- (clojure.core/defn
-  conexp-clj-context_attribute_closure
-  ([ctx set-of-attributes]
-   (clojure.core/apply
-    conexp.main/context-attribute-closure
-    [ctx set-of-attributes])))
- (clojure.core/defn
-  conexp-clj-list_layout_formats
-  ([] (clojure.core/apply conexp.main/list-layout-formats [])))
- (clojure.core/defn
-  conexp-clj-name_with_attributes
-  ([name macro-args]
-   (clojure.core/apply
-    conexp.main/name-with-attributes
-    [name macro-args])))
- (clojure.core/defn
-  conexp-clj-next_closed_set
-  ([base clop A]
-   (clojure.core/apply conexp.main/next-closed-set [base clop A])))
- (clojure.core/defn
-  conexp-clj-available_formats
-  ([type] (clojure.core/apply conexp.main/available-formats [type])))
- (clojure.core/defn
-  conexp-clj-frequent_closed_itemsets
-  ([context minsupp]
-   (clojure.core/apply
-    conexp.main/frequent-closed-itemsets
-    [context minsupp])))
- (clojure.core/defn
-  conexp-clj-context_transitive_closure
-  ([ctx]
-   (clojure.core/apply conexp.main/context-transitive-closure [ctx])))
- (clojure.core/defn
-  conexp-clj-singleton_p
-  ([x] (clojure.core/apply conexp.main/singleton? [x])))
- (clojure.core/defn
-  conexp-clj-values_of_attribute
-  ([mv-ctx m]
-   (clojure.core/apply conexp.main/values-of-attribute [mv-ctx m])))
- (clojure.core/defn
-  conexp-clj-adprime
-  ([ctx set-of-attributes]
-   (clojure.core/apply conexp.main/adprime [ctx set-of-attributes])))
- (clojure.core/defn
-  conexp-clj-adiag_context
-  ([base-set]
-   (clojure.core/apply conexp.main/adiag-context [base-set])))
- (clojure.core/defn
-  conexp-clj-illegal_argument
-  ([& strings]
-   (clojure.core/apply
-    conexp.main/illegal-argument
-    (clojure.core/vec (clojure.core/list* strings)))))
- (clojure.core/defn
-  conexp-clj-all_shared_intents
-  ([ctx-1 ctx-2]
-   (clojure.core/apply conexp.main/all-shared-intents [ctx-1 ctx-2])))
- (clojure.core/defn
-  conexp-clj-diag_context
-  ([base-set]
-   (clojure.core/apply conexp.main/diag-context [base-set])))
- (clojure.core/defn
-  conexp-clj-context_semiproduct
-  ([ctx-1 ctx-2]
-   (clojure.core/apply conexp.main/context-semiproduct [ctx-1 ctx-2])))
- (clojure.core/defn
-  conexp-clj-list_lattice_input_formats
-  ([] (clojure.core/apply conexp.main/list-lattice-input-formats [])))
- (clojure.core/defn
-  conexp-clj-next_closed_set_in_family
-  ([predicate base clop A]
-   (clojure.core/apply
-    conexp.main/next-closed-set-in-family
-    [predicate base clop A])))
- nil
- (clojure.core/defn
-  conexp-clj-context_xia_product
-  ([ctx-1 ctx-2]
-   (clojure.core/apply conexp.main/context-xia-product [ctx-1 ctx-2])))
- (clojure.core/defn
-  conexp-clj-difference
-  ([s1] (clojure.core/apply conexp.main/difference [s1]))
-  ([s1 s2] (clojure.core/apply conexp.main/difference [s1 s2]))
-  ([s1 s2 & sets]
-   (clojure.core/apply
-    conexp.main/difference
-    (clojure.core/vec (clojure.core/list* s1 s2 sets)))))
- (clojure.core/defn
-  conexp-clj-get_default_lattice_format
-  ([] (clojure.core/apply conexp.main/get-default-lattice-format [])))
- (clojure.core/defn
-  conexp-clj-pseudo_close_under_implications
-  ([implications set]
-   (clojure.core/apply
-    conexp.main/pseudo-close-under-implications
-    [implications set])))
- (clojure.core/defn
-  conexp-clj-rename
-  ([xrel kmap] (clojure.core/apply conexp.main/rename [xrel kmap])))
- (clojure.core/defn
-  conexp-clj-random_context
-  ([base-set fill-rate]
-   (clojure.core/apply
-    conexp.main/random-context
-    [base-set fill-rate]))
-  ([objects attributes fill-rate]
-   (clojure.core/apply
-    conexp.main/random-context
-    [objects attributes fill-rate])))
- (clojure.core/defn
-  conexp-clj-aprime
-  ([ctx attributes]
-   (clojure.core/apply conexp.main/aprime [ctx attributes])))
- (clojure.core/defn
-  conexp-clj-transitive_reduction
-  ([pairs]
-   (clojure.core/apply conexp.main/transitive-reduction [pairs]))
-  ([base pred]
-   (clojure.core/apply conexp.main/transitive-reduction [base pred])))
- (clojure.core/defn
-  conexp-clj-lectic__lt_
-  ([base A B] (clojure.core/apply conexp.main/lectic-< [base A B])))
- (clojure.core/defn
-  conexp-clj-concept_p
-  ([ctx [set-of-obj set-of-att]]
-   (clojure.core/apply
-    conexp.main/concept?
-    [ctx [set-of-obj set-of-att]])))
- (clojure.core/defn
-  conexp-clj-equivalent_implications_p
-  ([impls-1 impls-2]
-   (clojure.core/apply
-    conexp.main/equivalent-implications?
-    [impls-1 impls-2])))
- (clojure.core/defn
-  conexp-clj-context_subposition
-  ([ctx-1 ctx-2]
-   (clojure.core/apply conexp.main/context-subposition [ctx-1 ctx-2])))
- (clojure.core/defn
-  conexp-clj-has_version_p
-  ([{my-major :major, my-minor :minor, my-patch :patch}]
-   (clojure.core/apply
-    conexp.main/has-version?
-    [{my-major :major, my-minor :minor, my-patch :patch}])))
- (clojure.core/defn
-  conexp-clj-not_yet_implemented
-  ([] (clojure.core/apply conexp.main/not-yet-implemented [])))
- (clojure.core/defn
-  conexp-clj-all_closed_sets_in_family
-  ([predicate base clop]
-   (clojure.core/apply
-    conexp.main/all-closed-sets-in-family
-    [predicate base clop]))
-  ([predicate base clop initial]
-   (clojure.core/apply
-    conexp.main/all-closed-sets-in-family
-    [predicate base clop initial])))
- (clojure.core/defn
-  conexp-clj-restrict_concept
-  ([concept subcontext]
-   (clojure.core/apply
-    conexp.main/restrict-concept
-    [concept subcontext])))
- (clojure.core/defn
-  conexp-clj-context_union
-  ([ctx-1 ctx-2]
-   (clojure.core/apply conexp.main/context-union [ctx-1 ctx-2])))
- nil
- (clojure.core/defn
-  conexp-clj-all_bonds_by_shared_intents
-  ([ctx-1 ctx-2]
-   (clojure.core/apply
-    conexp.main/all-bonds-by-shared-intents
-    [ctx-1 ctx-2])))
- (clojure.core/defn
-  conexp-clj-make_lattice
-  ([& args]
-   (clojure.core/apply
-    conexp.main/make-lattice
-    (clojure.core/vec (clojure.core/list* args)))))
- (clojure.core/defn
-  conexp-clj-list_lattice_formats
-  ([] (clojure.core/apply conexp.main/list-lattice-formats [])))
- (clojure.core/defn
-  conexp-clj-one_context
-  ([base-set] (clojure.core/apply conexp.main/one-context [base-set])))
- (clojure.core/defn
-  conexp-clj-write_lattice
-  ([format lattice file]
-   (clojure.core/apply
-    conexp.main/write-lattice
-    [format lattice file]))
-  ([lattice file]
-   (clojure.core/apply conexp.main/write-lattice [lattice file])))
- (clojure.core/defn
-  conexp-clj-dissoc_in
-  ([m [k & ks :as keys]]
-   (clojure.core/apply
-    conexp.main/dissoc-in
-    [m (clojure.core/vec (clojure.core/list* k ks))])))
- nil
- (clojure.core/defn
-  conexp-clj-reduce_context
-  ([ctx] (clojure.core/apply conexp.main/reduce-context [ctx])))
- (clojure.core/defn
-  conexp-clj-dual_context
-  ([ctx] (clojure.core/apply conexp.main/dual-context [ctx])))
- (clojure.core/defn
-  conexp-clj-lcm
-  ([a b] (clojure.core/apply conexp.main/lcm [a b])))
- nil
- (clojure.core/defn
-  conexp-clj-pseudo_intents
-  ([ctx] (clojure.core/apply conexp.main/pseudo-intents [ctx])))
- (clojure.core/defn
-  conexp-clj-luxenburger_basis
-  ([context minsupp minconf]
-   (clojure.core/apply
-    conexp.main/luxenburger-basis
-    [context minsupp minconf])))
- (clojure.core/defn
-  conexp-clj-now
-  ([] (clojure.core/apply conexp.main/now [])))
- (clojure.core/defn
-  conexp-clj-implication_context
-  ([n] (clojure.core/apply conexp.main/implication-context [n])))
- (clojure.core/defn
-  conexp-clj-pseudo_clop_by_implications
-  ([implications]
-   (clojure.core/apply
-    conexp.main/pseudo-clop-by-implications
-    [implications])))
- (clojure.core/defn
-  conexp-clj-attributes
-  ([ctx] (clojure.core/apply conexp.main/attributes [ctx])))
- (clojure.core/defn
-  conexp-clj-seqable_p
-  ([x] (clojure.core/apply conexp.main/seqable? [x])))
- (clojure.core/defn
-  conexp-clj-minimum_set_covers
-  ([base-set sets]
-   (clojure.core/apply
-    conexp.main/minimum-set-covers
-    [base-set sets])))
- (clojure.core/defn
-  conexp-clj-intents
-  ([ctx] (clojure.core/apply conexp.main/intents [ctx])))
- (clojure.core/defn
-  conexp-clj-graph_of_function_p
-  ([relation source target]
-   (clojure.core/apply
-    conexp.main/graph-of-function?
-    [relation source target])))
- (clojure.core/defn
-  conexp-clj-clarify_attributes
-  ([ctx] (clojure.core/apply conexp.main/clarify-attributes [ctx])))
- (clojure.core/defn
-  conexp-clj-new_by_name
-  ([class-name & args]
-   (clojure.core/apply
-    conexp.main/new-by-name
-    (clojure.core/vec (clojure.core/list* class-name args)))))
- nil
- (clojure.core/defn
-  conexp-clj-explore_attributes
-  ([ctx & options__201__auto__]
-   (clojure.core/apply
-    conexp.main/explore-attributes
-    (clojure.core/vec (clojure.core/list* ctx options__201__auto__)))))
- (clojure.core/defn
-  conexp-clj-proper_conclusion
-  ([ctx A] (clojure.core/apply conexp.main/proper-conclusion [ctx A])))
- (clojure.core/defn
-  conexp-clj-__gt_Implication
-  ([premise conclusion]
-   (clojure.core/apply
-    conexp.main/->Implication
-    [premise conclusion])))
- (clojure.core/defn
-  conexp-clj-list_context_output_formats
-  ([] (clojure.core/apply conexp.main/list-context-output-formats [])))
- (clojure.core/defn
-  conexp-clj-object_concept
-  ([ctx g] (clojure.core/apply conexp.main/object-concept [ctx g])))
- (clojure.core/defn
-  conexp-clj-context_from_clop
-  ([base-set clop]
-   (clojure.core/apply conexp.main/context-from-clop [base-set clop])))
- (clojure.core/defn
-  conexp-clj-context_apposition
-  ([ctx-1 ctx-2]
-   (clojure.core/apply conexp.main/context-apposition [ctx-1 ctx-2])))
- (clojure.core/defn
-  conexp-clj-rename_keys
-  ([map kmap] (clojure.core/apply conexp.main/rename-keys [map kmap])))
- (clojure.core/defn
-  conexp-clj-set_default_lattice_format_f
-  ([format__3361__auto__]
-   (clojure.core/apply
-    conexp.main/set-default-lattice-format!
-    [format__3361__auto__])))
- (clojure.core/defn
-  conexp-clj-proper_premise_implications
-  ([ctx]
-   (clojure.core/apply conexp.main/proper-premise-implications [ctx])))
- (clojure.core/defn
-  conexp-clj-reduce_objects
-  ([ctx] (clojure.core/apply conexp.main/reduce-objects [ctx])))
- (clojure.core/defn
-  conexp-clj-lattice_upper_neighbours
-  ([lat x]
-   (clojure.core/apply conexp.main/lattice-upper-neighbours [lat x])))
- (clojure.core/defn
-  conexp-clj-warn
-  ([message] (clojure.core/apply conexp.main/warn [message])))
- (clojure.core/defn
-  conexp-clj-context_disjoint_union
-  ([ctx-1 ctx-2]
-   (clojure.core/apply
-    conexp.main/context-disjoint-union
-    [ctx-1 ctx-2])))
- (clojure.core/defn
-  conexp-clj-__gt_Many_Valued_Context
-  ([objects attributes incidence]
-   (clojure.core/apply
-    conexp.main/->Many-Valued-Context
-    [objects attributes incidence])))
- (clojure.core/defn
-  conexp-clj-context_sum
-  ([ctx-1 ctx-2]
-   (clojure.core/apply conexp.main/context-sum [ctx-1 ctx-2])))
- (clojure.core/defn
-  conexp-clj-read_context
-  ([file] (clojure.core/apply conexp.main/read-context [file]))
-  ([file explicit-format]
-   (clojure.core/apply
-    conexp.main/read-context
-    [file explicit-format])))
- (clojure.core/defn
-  conexp-clj-close_under_implications
-  ([implications set]
-   (clojure.core/apply
-    conexp.main/close-under-implications
-    [implications set])))
- (clojure.core/defn
-  conexp-clj-attribute_derivation
-  ([ctx attributes]
-   (clojure.core/apply
-    conexp.main/attribute-derivation
-    [ctx attributes])))
- (clojure.core/defn
-  conexp-clj-reduce_attributes
-  ([ctx] (clojure.core/apply conexp.main/reduce-attributes [ctx])))
- (clojure.core/defn
-  conexp-clj-immigrate
-  ([& ns-names]
-   (clojure.core/apply
-    conexp.main/immigrate
-    (clojure.core/vec (clojure.core/list* ns-names)))))
- (clojure.core/defn
-  conexp-clj-stem_base
-  ([ctx] (clojure.core/apply conexp.main/stem-base [ctx]))
-  ([ctx background-knowledge]
-   (clojure.core/apply
-    conexp.main/stem-base
-    [ctx background-knowledge])))
- nil
- (clojure.core/defn
-  conexp-clj-proper_superset_p
-  ([set-1 set-2]
-   (clojure.core/apply conexp.main/proper-superset? [set-1 set-2])))
- (clojure.core/defn
-  conexp-clj-print_context
-  ([ctx & args]
-   (clojure.core/apply
-    conexp.main/print-context
-    (clojure.core/vec (clojure.core/list* ctx args)))))
- (clojure.core/defn
-  conexp-clj-ensure_length
-  ([string length]
-   (clojure.core/apply conexp.main/ensure-length [string length]))
-  ([string length padding]
-   (clojure.core/apply
-    conexp.main/ensure-length
-    [string length padding])))
- nil
- (clojure.core/defn
-  conexp-clj-respects_p
-  ([set impl] (clojure.core/apply conexp.main/respects? [set impl])))
- nil
- (clojure.core/defn
-  conexp-clj-to_set
-  ([thing] (clojure.core/apply conexp.main/to-set [thing])))
- (clojure.core/defn
-  conexp-clj-direct_upper_concepts
-  ([ctx [A B]]
-   (clojure.core/apply conexp.main/direct-upper-concepts [ctx [A B]])))
- (clojure.core/defn
-  conexp-clj-conclusion
-  ([thing] (clojure.core/apply conexp.main/conclusion [thing])))
- (clojure.core/defn
-  conexp-clj-ceil
-  ([n] (clojure.core/apply conexp.main/ceil [n])))
- (clojure.core/defn
-  conexp-clj-lattice_inf_irreducibles
-  ([lat]
-   (clojure.core/apply conexp.main/lattice-inf-irreducibles [lat])))
- (clojure.core/defn
-  conexp-clj-index
-  ([xrel ks] (clojure.core/apply conexp.main/index [xrel ks])))
- (clojure.core/defn
-  conexp-clj-clarify_context
-  ([ctx] (clojure.core/apply conexp.main/clarify-context [ctx])))
- (clojure.core/defn
-  conexp-clj-get_default_layout_format
-  ([] (clojure.core/apply conexp.main/get-default-layout-format [])))
- (clojure.core/defn
-  conexp-clj-direct_lower_concepts
-  ([ctx [A B]]
-   (clojure.core/apply conexp.main/direct-lower-concepts [ctx [A B]])))
- (clojure.core/defn
-  conexp-clj-superset_p
-  ([set1 set2] (clojure.core/apply conexp.main/superset? [set1 set2])))
- (clojure.core/defn
-  conexp-clj-set_default_layout_format_f
-  ([format__3361__auto__]
-   (clojure.core/apply
-    conexp.main/set-default-layout-format!
-    [format__3361__auto__])))
- (clojure.core/defn
-  conexp-clj-inf_additive_layout
-  ([lattice]
-   (clojure.core/apply conexp.main/inf-additive-layout [lattice])))
- (clojure.core/defn
-  conexp-clj-holds_p
-  ([impl ctx] (clojure.core/apply conexp.main/holds? [impl ctx])))
- (clojure.core/defn
-  conexp-clj-lattice_sup_irreducibles
-  ([lat]
-   (clojure.core/apply conexp.main/lattice-sup-irreducibles [lat])))
- (clojure.core/defn
-  conexp-clj-hash_combine_hash
-  ([& args]
-   (clojure.core/apply
-    conexp.main/hash-combine-hash
-    (clojure.core/vec (clojure.core/list* args))))))


Support retrieving observations from the backend

--- src/scavenger/client/main.cljs
+++ src/scavenger/client/main.cljs
@@ -39,8 +39,17 @@
                  :where [?e :sort/name]]
                (d/db state) query)})

+(defmethod read :observations
+  [{:keys [state query]} key params]
+  {:value (d/q '[:find [(pull ?e [*]) ...]
+                 :where [?e :observation/sort]]
+               (d/db state) query)})
+
 ; Mutator for state
 (defmulti mutate om/dispatch)
+
+(defn rand-range [min max]
+  (+ min (* (rand) (- max min))))

 (defmethod mutate 'observations/add [{:keys [state]} _ entity]
   {:value {:keys [:observations]}
@@ -49,7 +58,8 @@
      (edn-xhr
       {:method "POST"
        :path "/observations"
-       :data (merge entity {:observation/lat 60.029427 :observation/lng 9.955025})
+       :data (merge entity {:observation/lat (rand-range 59.969842 59.979978)
+                            :observation/lng (rand-range 10.735079 10.721474)})
        :on-complete (fn [data] (d/transact! state [data]))}))})

 ; Scavenger sorts list
@@ -102,17 +112,19 @@
 (defui App
   static om/IQuery
   (query [this]
-    [:sorts])
+    [:sorts :observations])
   Object
   (render [this]
-    (let [{:keys [sorts]} (om/props this)]
+    (let [{:keys [sorts observations]} (om/props this)]
       (dom/div nil
         (dom/h1 nil "Scavenger sorts")
         (add-observation sorts)
-        (maps/google-map {:center {:lat 60 :lng 10},
-                     :zoom 12}
-          (maps/marker {:lat 60 :lng 10})
-          (maps/marker {:lat 60.01 :lng 10.01}))))))
+        (maps/google-map
+         {:center {:lat 59.974021 :lng 10.728273}, :zoom 12}
+         (map
+          (fn [o] (maps/marker {:lat (:observation/lat o)
+                                :lng (:observation/lng o)}))
+              observations))))))

 (def app (om/factory App))

@@ -128,6 +140,12 @@
           :on-complete (fn [data]
                          (d/transact! conn data))})

+; Load all observations from API
+(edn-xhr {:method "GET"
+          :path "/observations"
+          :on-complete (fn [data]
+                         (d/transact! conn data))})
+
 ; Start render loop!
 (om/add-root! reconciler
   App (gdom/getElement "app"))


fixed template parser to use the proper check for open tag

--- src/selmer/template_parser.clj
+++ src/selmer/template_parser.clj
@@ -37,7 +37,7 @@
   (loop [blocks-to-close 1
          ch (read-char rdr)]
     (when (and (pos? blocks-to-close) ch)
-      (if (= *tag-open* ch)
+      (if (open-tag? ch rdr)
         (let [tag-str (read-tag-content rdr)
               block? (re-matches #"\{\%\s*block.*" tag-str)
               block-name (if block? (get-tag-params #"block" tag-str))


Updated test test-insert-word-into-dictionary

--- test/zg/db_interface_test.clj
+++ test/zg/db_interface_test.clj
@@ -142,26 +142,26 @@
     (testing "the function insert-word-into-dictionary."
         (with-redefs [jdbc/insert! (fn [db-spec table-name data-entry] table-name)]
             (are [x y] (= x y)
-                :dictionary (insert-word-into-dictionary "word"           "description" "user-name"           :whitelist "2016-01-01")
-                :dictionary (insert-word-into-dictionary "word"           "description" "user-name"           :blacklist "2016-01-01")
-                :dictionary (insert-word-into-dictionary "different word" "description" "user-name"           :blacklist "2016-01-01")
-                :dictionary (insert-word-into-dictionary "different word" "description" "user-name"           :blacklist "2016-01-01")
-                :dictionary (insert-word-into-dictionary "different word" "description" "different user-name" :blacklist "2016-01-01")
-                :dictionary (insert-word-into-dictionary "different word" "description" "different user-name" :blacklist "2016-01-01")))
+                :dictionary (insert-word-into-dictionary "word"           nil "description" "user-name"           :whitelist "2016-01-01")
+                :dictionary (insert-word-into-dictionary "word"           nil "description" "user-name"           :blacklist "2016-01-01")
+                :dictionary (insert-word-into-dictionary "different word" nil "description" "user-name"           :blacklist "2016-01-01")
+                :dictionary (insert-word-into-dictionary "different word" nil "description" "user-name"           :blacklist "2016-01-01")
+                :dictionary (insert-word-into-dictionary "different word" nil "description" "different user-name" :blacklist "2016-01-01")
+                :dictionary (insert-word-into-dictionary "different word" nil "description" "different user-name" :blacklist "2016-01-01")))
         (with-redefs [jdbc/insert! (fn [db-spec table-name data-entry] (get data-entry :word))]
             (are [x y] (= x y)
-                "word"           (insert-word-into-dictionary "word"           "description" "user-name"           :whitelist "2016-01-01")
-                "word"           (insert-word-into-dictionary "word"           "description" "user-name"           :blacklist "2016-01-01")
-                "different word" (insert-word-into-dictionary "different word" "description" "user-name"           :blacklist "2016-01-01")
-                "different word" (insert-word-into-dictionary "different word" "description" "user-name"           :blacklist "2016-01-01")
-                "different word" (insert-word-into-dictionary "different word" "description" "different user-name" :blacklist "2016-01-01")
-                "different word" (insert-word-into-dictionary "different word" "description" "different user-name" :blacklist "2016-01-01")))
+                "word"           (insert-word-into-dictionary "word"           nil "description" "user-name"           :whitelist "2016-01-01")
+                "word"           (insert-word-into-dictionary "word"           nil "description" "user-name"           :blacklist "2016-01-01")
+                "different word" (insert-word-into-dictionary "different word" nil "description" "user-name"           :blacklist "2016-01-01")
+                "different word" (insert-word-into-dictionary "different word" nil "description" "user-name"           :blacklist "2016-01-01")
+                "different word" (insert-word-into-dictionary "different word" nil "description" "different user-name" :blacklist "2016-01-01")
+                "different word" (insert-word-into-dictionary "different word" nil "description" "different user-name" :blacklist "2016-01-01")))
         (with-redefs [jdbc/insert! (fn [db-spec table-name data-entry] (get data-entry :dictionary))]
             (are [x y] (= x y)
-                "w" (insert-word-into-dictionary "word"           "description" "user-name"           :whitelist "2016-01-01")
-                "b" (insert-word-into-dictionary "word"           "description" "user-name"           :blacklist "2016-01-01")
-                "b" (insert-word-into-dictionary "different word" "description" "user-name"           :blacklist "2016-01-01")
-                "b" (insert-word-into-dictionary "different word" "description" "user-name"           :blacklist "2016-01-01")
-                "b" (insert-word-into-dictionary "different word" "description" "different user-name" :blacklist "2016-01-01")
-                "b" (insert-word-into-dictionary "different word" "description" "different user-name" :blacklist "2016-01-01")))))
+                "w" (insert-word-into-dictionary "word"           nil "description" "user-name"           :whitelist "2016-01-01")
+                "b" (insert-word-into-dictionary "word"           nil "description" "user-name"           :blacklist "2016-01-01")
+                "b" (insert-word-into-dictionary "different word" nil "description" "user-name"           :blacklist "2016-01-01")
+                "b" (insert-word-into-dictionary "different word" nil "description" "user-name"           :blacklist "2016-01-01")
+                "b" (insert-word-into-dictionary "different word" nil "description" "different user-name" :blacklist "2016-01-01")
+                "b" (insert-word-into-dictionary "different word" nil "description" "different user-name" :blacklist "2016-01-01")))))


Fix double dispatching by refusing to dispatch on the same url

Turns out popstate is pretty important -- that's what the back button triggers

--- frontend/history.cljs
+++ frontend/history.cljs
@@ -29,9 +29,15 @@

     transformer))

+(defn set-current-token!
+  "Lets us keep track of the history state, so that we don't dispatch twice on the same URL"
+  [history-imp & [token]]
+  (set! (.-_current_token history-imp) (or token (.getToken history-imp))))
+
 (defn setup-dispatcher! [history-imp]
   (events/listen history-imp goog.history.EventType.NAVIGATE
-                 #(sec/dispatch! (str "/" (.-token %)))))
+                 #(do (set-current-token! history-imp)
+                      (sec/dispatch! (str "/" (.-token %))))))

 (defn bootstrap-dispatcher!
   "We need lots of control over when we start listening to navigation events because
@@ -41,14 +47,18 @@
   [history-imp]
   (events/listenOnce history-imp goog.history.EventType.NAVIGATE #(setup-dispatcher! history-imp)))

-(defn disable-popstate!
-  "Stops the browser's popstate from triggering NAVIGATION events.
-   We don't ever use it and it causes double dispatching."
+(defn disable-erroneous-popstate!
+  "Stops the browser's popstate from triggering NAVIGATION events unless the url has really
+   changed. Fixes duplicate dispatch in Safari and the build machines."
   [history-imp]
   ;; get this history instance's version of window, might make for easier testing later
   (let [window (.-window_ history-imp)]
-    (events/removeAll window goog.events.EventType.POPSTATE)))
-
+    (events/removeAll window goog.events.EventType.POPSTATE)
+    (events/listen window goog.events.EventType.POPSTATE
+                   #(if (= (.getToken history-imp)
+                           (.-_current_token history-imp))
+                      (utils/mlog "Ignoring duplicate dispatch event to" (.getToken history-imp))
+                      (.onHistoryEvent_ history-imp)))))

 (defn route-fragment
   "Returns the route fragment if this is a route that we've don't dispatch
@@ -100,7 +110,7 @@
     (.setUseFragment false)
     (.setPathPrefix "/")
     (bootstrap-dispatcher!)
-    (disable-popstate!)
-    ;; This will fire a navigate event with the current token
-    (.setEnabled true)
+    (set-current-token!) ; Stop Safari from double-dispatching
+    (disable-erroneous-popstate!) ; Stop Safari from double-dispatching
+    (.setEnabled true) ; This will fire a navigate event with the current token
     (setup-link-dispatcher! top-level-node)))


use :msgpack for cassandra dumps

use :msgpack for cassandra dumps

--- src/er_cassandra/dump/tables.clj
+++ src/er_cassandra/dump/tables.clj
@@ -136,7 +136,7 @@
    r-s]
   (ddo [:let [out (-> f io/file io/output-stream)
               w (transit/writer out
-                                :json
+                                :msgpack
                                 {:handlers transit-write-handler-map})
               notify-cnt (or notify-cnt 10000)
               counter-a (atom 0)
@@ -225,7 +225,7 @@
                       io/file
                       io/input-stream)
                r (transit/reader in
-                                 :json
+                                 :msgpack
                                  {:handlers transit-read-handler-map})]

            (prpr/catch


As it turns out, Schema doesn't work like that

--- src-cljs/frontend/components/insights/project.cljs
+++ src-cljs/frontend/components/insights/project.cljs
@@ -105,7 +105,7 @@
      [:dt "Outcome"]
      [:dd (:outcome build)]]]))

-(s/defn build-status-bar-chart [{:keys [plot-info builds :- [insights/BarChartableBuild]]} owner]
+(defn build-status-bar-chart [{:keys [plot-info builds]} owner]
   (reify
     om/IInitState
     (init-state [_]


sort import env var project list by name, ignore case (#1932)

--- src-cljs/frontend/components/project_settings.cljs
+++ src-cljs/frontend/components/project_settings.cljs
@@ -570,10 +570,7 @@

 (defn- import-env-vars-modal
   [{:keys [close-fn project-id project projects]} owner]
-  (let [track-properties {:project-id project-id
-                          :component "import-env-vars-modal"
-                          :owner owner}
-        set-selected-project (fn [vcs-url]
+  (let [set-selected-project (fn [vcs-url]
                                (om/set-state! owner {:selected-project {:vcs-url vcs-url :env-vars nil}})
                                (-> {:method :get
                                     :uri (gstring/format "/api/v1.1/project/%s/%s/envvar"
@@ -718,8 +715,9 @@
       (let [project (:project project-data)
             project-id (project-model/id project)
             close-fn #(om/set-state! owner :show-modal nil)
-            other-projects (filter #(not= (project-model/id %) project-id)
-                                   projects)]
+            other-projects (->> projects
+                                (filter #(not= (project-model/id %) project-id))
+                                (sort-by (comp string/lower-case project-model/project-name)))]
         (html
          ;; The :section and :article here are artifacts of the legacy styling
          ;; of the settings pages, and should go away as the structure of the


Fix sass options

Fix sass options

--- functions/project.clj
+++ functions/project.clj
@@ -11,7 +11,7 @@
                  [compojure "1.6.0"]
                  [deraen/sass4clj "0.3.1"]
                  [ring/ring-defaults "0.2.1"]]
-  :sass4clj {:source-paths ["resources/public/css/scss"]
+  :sass {:source-paths ["resources/public/css/scss"]
              :target-path "resources/public/css"
              :output-style :compressed}
   :ring {:handler wort.handler/app}


Rename ->cljs-uri ->uri in cljs

Rename ->cljs-uri ->uri in cljs

--- src/grafter_2/rdf/protocols.cljc
+++ src/grafter_2/rdf/protocols.cljc
@@ -2,7 +2,7 @@
   grafter-2.rdf.protocols
   "Abstract functions for interacting with RDF & RDF backends, such as
   RDF4j."
-  (:require [grafter.vocabularies.core :as gvc :refer [->uri]]
+  (:require [grafter.vocabularies.core :as gvc]
             [grafter.vocabularies.rdf :as rdf]
             [grafter.vocabularies.xsd :refer [xsd:boolean xsd:byte
                                               xsd:date xsd:dateTime
@@ -17,20 +17,21 @@

 #?(:cljs
    (defprotocol IURIable
-     (->cljs-uri [url] "Convert into a grafter.vocabularies.core/URI")))
+     ;; TODO consider adding this to CLJ side for extra portabiltiy
+     (->uri [url] "Convert into a grafter.vocabularies.core/URI")))

 #?(:cljs
    (extend-protocol IURIable
      string
-     (->cljs-uri [uri]
-       (->uri uri))
+     (->uri [uri]
+       (gvc/->uri uri))

      gvc/URI
-     (->cljs-uri [uri]
+     (->uri [uri]
        uri)

      goog/Uri
-     (->cljs-uri [uri]
+     (->uri [uri]
        (->uri (.toString uri)))))

 (defprotocol IStatement
@@ -267,7 +268,7 @@
   [val datatype-uri]
   (->RDFLiteral (str val)
                 #?(:clj  (->java-uri datatype-uri)
-                   :cljs (->cljs-uri datatype-uri))))
+                   :cljs (->uri datatype-uri))))

 (extend-protocol IRawValue
   #?@(:clj


Neo4j stuff

Neo4j stuff

--- src/webapp/client/views/loginpanel.cljs
+++ src/webapp/client/views/loginpanel.cljs
@@ -44,18 +44,35 @@
    (.log js/console (str (neo-incoming (<! (neo4j "START x = node(0) RETURN x" {} )) "x")))
 )

+(comment  go
+   (.log js/console (str (neo-result (<! (neo4j "START x = node(0) RETURN x" {} )) "x")))
+)
+
+
+(defn neo-id [x]
+  (comment  go
+      (get (first (<! (neo4j "START x = node(1) RETURN ID(x)" {} ) "x")) "ID(x)")
+  )
+)
+
 (comment go
-   (.log js/console (str (neo-result (<! (neo4j "START x = node(0) RETURN x" {} )) "x")))
-)
-
-(comment go
+    (.log js/console (str  (first (<! (neo-id nil)))))
+
+ )
+
+(comment  go
    (.log js/console

+         (let [
+               rr (<! (neo4j "CREATE (n {name : {value} , title : 'Developer'}) return n" {:value "Zubair"}  ) )
+               ]
          (str
-          ;(neo-properties
-               (<! (neo4j "CREATE (n {name : {value} , title : 'Developer'}) return n" {:value "Zubair"}  ) )
-               ;"n")
-               )))
+          (neo-properties
+               rr
+               "n")
+          " : ID : "
+          (<! (neo-id rr))
+               ))))

 ;(makeit "fdsfd")


fix indentation

fix indentation

--- src/metabase/models/session.clj
+++ src/metabase/models/session.clj
@@ -2,7 +2,7 @@
   (:require [korma.core :refer :all]
             [metabase.db :refer :all]
             (metabase.models [common :refer :all]
-              [user :refer [User]])
+                             [user :refer [User]])
             [metabase.util :as util]))

 (defentity Session


Removed unneccessary local function

Removed unneccessary local function

Signed-off-by: Daniel Borchmann <25857343a15bf1edafebc2912e82ecf775c585c1@mailbox.tu-dresden.de>

--- src/conexp/contrib/gui/editors/context_editor/context_editor.clj
+++ src/conexp/contrib/gui/editors/context_editor/context_editor.clj
@@ -246,26 +246,22 @@
           e-ctx          @ectx,
           widget         (context-editor-widget. root table ectx),
           keystroke-fill (KeyStroke/getKeyStroke KeyEvent/VK_SPACE
-                                                 ActionEvent/CTRL_MASK false),
-
-          add-button     (fn [toolbar button]
-                           (if (= button :separator)
-                             (.add toolbar (Box/createHorizontalStrut 3))
-                             (let [[path alt tip fun no-return] button
-                                   bctrl (make-tooltip-button
-                                          tip
-                                          (get-image-icon-or-string (str "context-editor/"
-                                                                         path)
-                                                                    alt))
-                                   handler #(if no-return
-                                              (fun widget)
-                                              (set-context @ectx (fun widget)))]
-                               (set-handler bctrl handler)
-                               (.add toolbar ^JComponent (get-widget bctrl)))))]
+                                                 ActionEvent/CTRL_MASK false)]
       (register-keyboard-action table fill-selection-with-X "Fill-X" keystroke-fill :focus)
       (add-widget e-ctx widget)
       (doseq [icon icons]
-        (add-button bar icon))
+        (if (= icon :separator)
+          (.add bar (Box/createHorizontalStrut 3))
+          (let [[path alt tip fun no-return] icon
+                bctrl (make-tooltip-button
+                       tip
+                       (get-image-icon-or-string (str "context-editor/" path)
+                                                 alt))
+                handler #(if no-return
+                           (fun widget)
+                           (set-context @ectx (fun widget)))]
+            (set-handler bctrl handler)
+            (.add bar ^JComponent (get-widget bctrl)))))
       widget))

   nil)


Sane :context handling

Sane :context handling

--- src/io/aviso/rook/dispatcher.clj
+++ src/io/aviso/rook/dispatcher.clj
@@ -139,7 +139,10 @@
                 (unnest-table context-pathvec middleware entries))))
           (unnest-table [context-pathvec default-middleware entries]
             (mapv (fn [[_ pathvec :as unnested-entry]]
-                    (assoc unnested-entry 1 (into context-pathvec pathvec)))
+                    (assoc unnested-entry 1
+                           (with-meta (into context-pathvec pathvec)
+                             {:context (into context-pathvec
+                                         (:context (meta pathvec)))})))
               (mapcat (partial unnest-entry default-middleware) entries)))]
     (unnest-table [] nil dispatch-table)))

@@ -249,27 +252,37 @@
               [middleware (get middleware mw-spec)]
               (let [mw-sym (gensym "mw_sym__")]
                 [(assoc middleware mw-spec mw-sym) mw-sym]))
-            ns-metadata      (-> verb-fn-sym namespace symbol the-ns meta)
-            metadata         (merge (dissoc ns-metadata :doc)
+            ns               (-> verb-fn-sym namespace symbol the-ns)
+            ns-metadata      (meta ns)
+            metadata         (merge (reduce-kv (fn [out k v]
+                                                 (assoc out
+                                                   k (if (symbol? v)
+                                                       @(ns-resolve ns v)
+                                                       v)))
+                                      {}
+                                      (dissoc ns-metadata :doc))
                                (meta (resolve verb-fn-sym)))
             sync?            (:sync metadata)
             route-params     (mapv (comp symbol name)
                                (filter keyword? pathvec))
+            context          (:context (meta pathvec))
             pathvec          (keywords->symbols pathvec)
             arglist          (first (:arglists metadata))
             non-route-params (remove (set route-params) arglist)
             arg-resolvers    (:arg-resolvers metadata)
             schema           (:schema metadata)
-            handler {:middleware-sym   mw-sym
-                     :route-params     route-params
-                     :non-route-params non-route-params
-                     :verb-fn-sym      verb-fn-sym
-                     :arglist          arglist
-                     :arg-resolvers    arg-resolvers
-                     :schema           schema
-                     :sync?            sync?
-                     :metadata         metadata
-                     :location         (string/join "/" (cons "" pathvec))}
+            handler (cond->
+                      {:middleware-sym   mw-sym
+                       :route-params     route-params
+                       :non-route-params non-route-params
+                       :verb-fn-sym      verb-fn-sym
+                       :arglist          arglist
+                       :arg-resolvers    arg-resolvers
+                       :schema           schema
+                       :sync?            sync?
+                       :metadata         metadata}
+                      context
+                      (assoc :context (string/join "/" (cons "" context))))
             handlers (assoc handlers handler-sym handler)]
         (recur routes handlers middleware (next entries)))
       {:routes     (sorted-routes routes)
@@ -393,7 +406,7 @@

                   {:keys [middleware-sym route-params non-route-params
                           verb-fn-sym arglist arg-resolvers schema sync?
-                          metadata location]}
+                          metadata context]}
                   (get handlers handler-sym)

                   route-param-resolver
@@ -429,7 +442,8 @@
                             (update-in [:rook :metadata]
                               merge (dissoc metadata :arg-resolvers))
                             ;; FIXME
-                            (update-in [:context] str location))))
+                            (cond-> context
+                              (update-in [:context] str context)))))

                   pathvec' (mapv #(if (variable? %) ::param-next %) pathvec)


Support new command return structure; save latest version of story.

--- src/tryclojure/models/eval.clj
+++ src/tryclojure/models/eval.clj
@@ -43,6 +43,8 @@

 ;; story

+(def story (ref nil))
+
 (defmulti run-story-command (fn [command expr] command))

 (defmethod run-story-command "hear" [command expr]
@@ -51,14 +53,13 @@
   (if-let [story-name (second (str/split expr #" "))]
     (let [file-path (str/lower-case (str "stories/" story-name ".is"))
           story-str (slurp file-path)]
-      (println "wooot")
-      (def story (story/init-story story-str))
-      (println story)
-      (pprint story)
+      (dosync (ref-set story (story/init-story story-str)))
       "Are you sitting comfortably? Then, we shall begin.")
     (throw (Exception. "You must specify the name of the story you want to load."))))

 (defmethod run-story-command :default [command expr] ;; normal command
   (if (nil? story)
     (throw (Exception. "Type 'hear --story--' to begin."))
-    (story/run-command story expr)))+    (let [result (story/run-command (deref story) expr)]
+      (dosync (ref-set story (:sto result)))
+      (:out result))))


[#2127] Add column rqg type [backend] [spec]

--- backend/specs/akvo/lumen/specs/import/column.clj
+++ backend/specs/akvo/lumen/specs/import/column.clj
@@ -20,6 +20,7 @@
 (create-ns  'akvo.lumen.specs.import.column.multiple)
 (create-ns  'akvo.lumen.specs.import.column.multiple.caddisfly)
 (create-ns 'akvo.lumen.specs.import.column.multiple.geo-shape-features)
+(create-ns  'akvo.lumen.specs.import.column.rqg)

 (alias 'c.text 'akvo.lumen.specs.import.column.text)
 (alias 'c.number 'akvo.lumen.specs.import.column.number)
@@ -29,8 +30,9 @@
 (alias 'c.multiple 'akvo.lumen.specs.import.column.multiple)
 (alias 'c.multiple.caddisfly 'akvo.lumen.specs.import.column.multiple.caddisfly)
 (alias 'c.multiple.geo-shape-features 'akvo.lumen.specs.import.column.multiple.geo-shape-features)
+(alias 'c.rqg 'akvo.lumen.specs.import.column.rqg)

-(s/def ::type #{"text" "number" "date" "geoshape" "geopoint" "multiple"})
+(s/def ::type #{"text" "number" "date" "geoshape" "geopoint" "multiple" "rqg"})

 (s/def ::c.text/type #{"text"})
 (s/def ::c.number/type #{"number"})
@@ -38,6 +40,7 @@
 (s/def ::c.geoshape/type #{"geoshape"})
 (s/def ::c.geopoint/type #{"geopoint"})
 (s/def ::c.multiple/type #{"multiple"})
+(s/def ::c.rqg/type #{"rqg"})

 (s/def ::column-header (s/keys :req-un [::v/title]
                                :opt-un [::v/id
@@ -77,6 +80,9 @@

 (s/def ::c.multiple/header (s/merge ::column-header ::c.multiple/header*))

+(s/def ::c.rqg/header* (s/keys :req-un [::c.rqg/type] :opt-un [::v/key]))
+(s/def ::c.rqg/header (s/merge ::column-header ::c.rqg/header*))
+
 (defmulti column-header :type)
 (defmethod column-header "text" [_] ::c.text/header)
 (defmethod column-header "date" [_] ::c.date/header)
@@ -84,6 +90,7 @@
 (defmethod column-header "geoshape" [_] ::c.geoshape/header)
 (defmethod column-header "geopoint" [_] ::c.geopoint/header)
 (defmethod column-header "multiple" [_] ::c.multiple/header)
+(defmethod column-header "rqg" [_] ::c.rqg/header)

 (s/def ::header (s/multi-spec column-header :type))

@@ -133,6 +140,7 @@
                             #(instance? Geopoint %)
                             #(s/gen #{(Geopoint. v/point)})))

+(s/def ::c.rqg/value (s/coll-of map? :kind vector?))

 (defmulti column-body (fn[{:keys [type] :as o}] type))

@@ -142,6 +150,7 @@
 (s/def ::c.multiple/body (s/keys :req-un [::c.multiple/type ::c.multiple/value]))
 (s/def ::c.geoshape/body (s/keys :req-un [::c.geoshape/type ::c.geoshape/value]))
 (s/def ::c.geopoint/body (s/keys :req-un [::c.geopoint/type ::c.geopoint/value]))
+(s/def ::c.rqg/body (s/keys :req-un [::c.rqg/type ::c.rqg/value]))

 (defmethod column-body "text" [_] ::c.text/body)
 (defmethod column-body "number" [_] ::c.number/body)
@@ -149,6 +158,7 @@
 (defmethod column-body "multiple" [_] ::c.multiple/body)
 (defmethod column-body "geoshape" [_] ::c.geoshape/body)
 (defmethod column-body "geopoint" [_] ::c.geopoint/body)
+(defmethod column-body "rqg" [_] ::c.rqg/body)

 (s/def ::body  (s/multi-spec column-body (fn [a b] a)))

@@ -166,5 +176,7 @@
   (s/keys :req-un [::c.geoshape/header ::c.geoshape/body]))
 (defmethod column "geopoint" [_]
   (s/keys :req-un [::c.geopoint/header ::c.geopoint/body]))
+(defmethod column "rqg" [_]
+  (s/keys :req-un [::c.rqg/header ::c.rqg/body]))

 (s/def ::column (s/multi-spec column (fn [a b] a)))


FIX: doc typo for manifests

FIX: doc typo for manifests

--- src/leiningen/droid/manifest.clj
+++ src/leiningen/droid/manifest.clj
@@ -136,7 +136,7 @@
        (reduce +)))

 (defn generate-manifest
-  "If a :manifest-template-file is specified, perform template substitution with
+  "If a :manifest-template-path is specified, perform template substitution with
   the values in :android :manifest, including the version-name and version-code
   which are automatically generated, placing the output in :manifest-path."
   [{{:keys [manifest-path manifest-template-path manifest-options target-path


:construction: TG-269 Display rectangle over interaction

--- frontend/src/uxbox/view/ui/viewer/shapes.cljs
+++ frontend/src/uxbox/view/ui/viewer/shapes.cljs
@@ -63,15 +63,16 @@
          :style {:cursor "pointer"}}
      (factory shape)
      (when show-itx?
-       [:circle {:class "interaction-bullet"
-                 :cx (:x1 rect)
-                 :cy (:y1 rect)
-                 :r 5}]
        [:rect {:class "interaction-hightlight"
                  :x (:x1 rect)
                  :y (:y1 rect)
                  :width (:width rect)
-                 :height (:height rect)}])]))
+                 :height (:height rect)}]))
+
+;;       [:circle {:class "interaction-bullet"
+;;                 :cx (:x1 rect)
+;;                 :cy (:y1 rect)
+;;                 :r 5}])]

 ;; --- Image Shape Wrapper
 ;;


Remove old icons

Remove old icons

--- src-cljs/frontend/components/aside.cljs
+++ src-cljs/frontend/components/aside.cljs
@@ -468,7 +468,6 @@
 (defn nav-icon
   [v1 v2]
   (if (feature/enabled? :ui-v2)
-    #_[:img.aside-icon {:src (utils/cdn-path (str "/img/inner/icons/Aside-" v2 ".svg"))}]
     [:i {:class v1} v2]))

 (defn aside-nav [app owner]


remove useless hr elements in side nav

remove useless hr elements in side nav

--- src-cljs/frontend/components/aside.cljs
+++ src-cljs/frontend/components/aside.cljs
@@ -540,8 +540,6 @@
               [:i.material-icons "settings"]
               [:div.nav-label "Account Settings"]])

-           [:hr]
-
            (when-not (ld/feature-on? "top-bar-ui-v-1")
              [:a.aside-item (open-ext {:title "Documentation"
                                        :data-placement "right"
@@ -574,8 +572,6 @@
                 [:i.material-icons "receipt"]
                 [:div.nav-label "Changelog"]]))

-           [:hr]
-
            (when (:admin user)
              [:a.aside-item {:class (when (= :admin-settings current-route) "current")
                              :data-placement "right"


add equivalent cases to test-type-exact-match

--- test/app/test/find_test.clj
+++ test/app/test/find_test.clj
@@ -25,8 +25,15 @@
         type-qname-a (.getType (.get (.getMembers c) 2))
         type-array-qname-a (.getType (.get (.getMembers c) 3))]
     (binding [typeSolver (jreTypeSolver)]
+      ; first match types with themselves
+      (is (type-exact-match? type-a type-a))
+      (is (type-exact-match? type-qname-a type-qname-a))
+      (is (type-exact-match? type-array-a type-array-a))
+      (is (type-exact-match? type-array-qname-a type-array-qname-a))
+      ; then match the equivalent
       (is (type-exact-match? type-a type-qname-a))
       (is (type-exact-match? type-array-a type-array-qname-a))
+      ; then verify the others does not match
       (is (not (type-exact-match? type-a type-array-a))))))

 ; ============================================


Added binary predicate behavior-reachable|behavior/2 (requires SOOT to be run).

--- damp.ekeko.aspectj.plugin/src/damp/ekeko/aspectj/soot.clj
+++ damp.ekeko.aspectj.plugin/src/damp/ekeko/aspectj/soot.clj
@@ -35,6 +35,9 @@
   org.aspectj.weaver.Advice
   (sootsignature [this]
                  (sootsignature-as-method (.getSignature this)))
+  org.aspectj.weaver.bcel.BcelMethod
+  (sootsignature [this]
+    (sootsignature-as-method this))
   org.aspectj.weaver.ConcreteTypeMunger
   (sootsignature [this]
                  (sootsignature (.getMunger this)))
@@ -76,6 +79,15 @@
   (sootsignature-as-method [this]
                            ""))

+(defn
+  behavior-soot|method
+  "Relation between a method or advice, and the corresponding Soot method."
+  [?method ?soot]
+  (fresh [?model ?scene ?signature]
+         (world/method ?method)
+         (equals ?signature (sootsignature ?method))
+         (soot/soot-model-scene ?model ?scene)
+         (soot/soot-method-signature ?soot ?signature)))

 (defn
   advice-soot|method
@@ -183,11 +195,56 @@
                            (qwal/qcurrent [icfgnode]
                                           (equals ?soot|method2 (soot/icfgnode-method icfgnode)))))))

-
+
+;;slow
+(defn
+  behavior-reachable|behaviorSLOW
+  "Relation between a behavior (advice or method) and another behavior that may be executed afterwards. Slow version using regular path expressions."
+  [?behavior1 ?behavior2]
+  (fresh [?soot|method1 ?soot|method2]
+         (behavior-soot|method ?behavior1 ?soot|method1)
+         (!= ?behavior1 ?behavior2)
+         (behavior-soot|method ?behavior2 ?soot|method2)
+         (fresh [?icfg ?icfg|start ?icfg|end]
+                ;starting in main() because starting in the caller of advice1 did not work
+                ;(advice-icfg-start ?advice1 ?icfg ?icfg|start)
+                (icfg-start ?icfg ?icfg|start)
+                (qwal/qwal ?icfg ?icfg|start ?icfg|end []
+                           ;(start in application of first advice, make transition to first advice)
+                           ;qwal/q=>
+                           ;start in main method, make zero or more transitions to first advice
+                           (qwal/q=>*)
+                           (qwal/qcurrent [icfgnode]
+                                          (equals ?soot|method1 (soot/icfgnode-method icfgnode)))
+                           ;make one or more transitions to second advice
+                           (qwal/q=>+)
+                           (qwal/qcurrent [icfgnode]
+                                          (equals ?soot|method2 (soot/icfgnode-method icfgnode)))))))
+
+(defn
+  soot|behavior-soot|behavior|reachable
+  [?m ?r]
+  (soot/soot|method-soot|method|called+ ?m ?r))
+
+(defn
+  behavior-reachable|behavior
+  "Relation between a behavior (advice or method) and another behavior that may be executed afterwards."
+  [?behavior1 ?behavior2]
+  (fresh [?soot|method1 ?soot|method2]
+         (behavior-soot|method ?behavior1 ?soot|method1)
+         (!= ?behavior1 ?behavior2)
+         (behavior-soot|method ?behavior2 ?soot|method2)
+         (soot|behavior-soot|behavior|reachable ?soot|method1 ?soot|method2)))
+
+
+
+
+
+

 (comment
-  (damp.ekeko/ekeko* [?advice ?method] (advice-sootmethod ?advice ?method))
+  (damp.ekeko/ekeko* [?advice ?method] (advice-soot|method ?advice ?method))

   (damp.ekeko/ekeko* [?itmethod ?sootmethod] (intertype|method-sootmethod ?itmethod ?sootmethod))


stop using log-ex middleware

stop using log-ex middleware

--- cljs/src/main/plastic/frame.cljs
+++ cljs/src/main/plastic/frame.cljs
@@ -1,10 +1,10 @@
 (ns plastic.frame
   (:require-macros [plastic.macros.logging :refer [log info warn error group group-end measure-time]]
                    [cljs.core.async.macros :refer [go-loop go]])
-  (:require [plastic.frame.core :as frame]
-            [plastic.frame.router :as router]
+  (:require [plastic.frame.core :as frame :refer [pure trim-v]]
+            [plastic.frame.router :refer [event-chan purge-chan]]
             [clojure.string :as string]
-            [plastic.frame.handlers :refer [handle]]
+            [plastic.frame.handlers :refer [handle register-base]]
             [cljs.core.async :refer [chan put! <!]]))

 (defn simple-printer [acc val]
@@ -25,15 +25,15 @@

 (defn register-handler
   ([id handler]
-   (frame/register-handler id [timing frame/trim-v] handler))
+   (register-base id [pure timing trim-v] handler))
   ([id middleware handler]
-   (frame/register-handler id [timing frame/trim-v middleware] handler)))
+   (register-base id [pure timing trim-v middleware] handler)))

 (def subscribe frame/subscribe)

 (defn router-loop []
   (go-loop []
-    (let [event-v (<! router/event-chan)]                   ;; wait for an event
+    (let [event-v (<! event-chan)]                   ;; wait for an event
       (try
         (handle event-v)

@@ -48,7 +48,7 @@
         (catch :default e
           (do
             ;; try to recover from this (probably uncaught) error as best we can
-            (router/purge-chan)                             ;; get rid of any pending events
+            (purge-chan)                             ;; get rid of any pending events
             (router-loop)                                   ;; Exception throw will cause termination of go-loop. So, start another.

             (throw e)))))                                   ;; re-throw so the rest of the app's infrastructure (window.onerror?) gets told


Better sizing for recursive generators

Better sizing for recursive generators

In general, generators should 'grow' linearly with size parameter. For
example, a tree generator given a size of 20 should have approximately
twice as many leaf nodes (internal nodes is another story) as the same
generator with a size of 10. This change brings us much closer
(exactly?) to that. Previously, when we recurred, we simply halved the
size. This did not lead to linear growth. Instead, we now first start by
treating the size as the maximum number of desired leaf nodes. We then
generate a height: 1 to 5. It's important to note that we start with a
height of 1, and not 0, since the whole point of this is to wrap the
inner generator in a tree. Once we have the maximum number of leaf
nodes, and the height (h), we can solve for the branching the branching
factor (k):

k = number-of-nodes ^ (1 / h)

Now that we've determined the shape of the tree, we can use the
branching factor (k) to resize the recursive generator. Since these
sizes are almost always small (under 10), we take care to treat scalar
generators differently, and still allow them to reach the maximum size.
This means that instead of having leaf nodes with small scalar values,
the values at the leaves can still grow up to the maximum size.

It's important to note that this produces trees that, on average, are
perfectly balanced. If you require something different, you'll need to
write something specific to your use-case.

This change also introduces a new public helper function: recursive-gen,
which is useful for eliminating the boiler-plate from writing recursive
generators. Instead of having to deal with the resizing yourself, you
simply provide recursive-gen with your 'container' generator, and your
scalar generator. For example:

(gen/recursive-gen gen/vector gen/boolean)

This will generate trees of booleans.

--- src/main/clojure/clojure/test/check/generators.clj
+++ src/main/clojure/clojure/test/check/generators.clj
@@ -504,20 +504,43 @@
            (list inner-type)
            (map inner-type inner-type)]))

-(defn sized-container
-  {:no-doc true}
-  [inner-type]
-  (fn [size]
-    (if (zero? size)
-      inner-type
-      (one-of [inner-type
-               (container-type (resize (quot size 2) (sized (sized-container inner-type))))]))))
+(defn recursive-helper
+  [container-gen-fn scalar-gen scalar-size children-size height]
+  (if (zero? height)
+    (resize scalar-size scalar-gen)
+    (resize children-size
+            (container-gen-fn
+              (recursive-helper
+                container-gen-fn scalar-gen
+                scalar-size children-size (dec height))))))
+
+(defn recursive-gen
+  "This is a helper for writing recursive (tree-shaped) generators. The first
+  argument should be a function that takes a generator as an argument, and
+  produces another generator that 'contains' that generator. The vector function
+  in this namespace is a simple example. The second argument is a scalar
+  generator, like boolean. For example, to produce a tree of booleans:
+
+    (gen/recursive-gen gen/vector gen/boolean)
+
+  Vectors or maps either recurring or containing booleans or integers:
+
+    (gen/recursive-gen (fn [inner] (gen/one-of [(gen/vector inner)
+                                                (gen/map inner inner)]))
+                       (gen/one-of [gen/boolean gen/int]))
+  "
+  [container-gen-fn scalar-gen]
+  (sized (fn [size]
+           (bind (choose 1 5)
+                 (fn [height] (let [children-size (Math/pow size (/ 1 height))]
+                                (recursive-helper container-gen-fn scalar-gen size
+                                                  children-size height)))))))

 (def any
   "A recursive generator that will generate many different, often nested, values"
-  (sized (sized-container simple-type)))
+  (recursive-gen container-type simple-type))

 (def any-printable
   "Like any, but avoids characters that the shell will interpret as actions,
   like 7 and 14 (bell and alternate character set command)"
-  (sized (sized-container simple-type-printable)))
+  (recursive-gen container-type simple-type-printable))