@startuml
skinparam dpi 300

skinparam class {
  backgroundColor Ivory
  borderColor DarkRed
}

package SubGenerators {
  Predicategenerator <-- SafetyLivenessPredicateGenerator
}
package GeneratorPresets {
  Generators -* CNFSafetyLivenessGenerator
  CNFSafetyLivenessGenerator *-- ConstraintSolver
}
SubGenerators -- GeneratorPresets
CNFSafetyLivenessGenerator -() CNFFormula

class CNFSafetyLivenessGenerator {
  variable_names 
  functor_names 
  functor_arity 
  functor_recursion_depth 
  predicate_names
  predicate_arities
  atom_connectives
  **clause_lengths**
  **number_of_literals**
  **number_of_clauses**
}

class ConstraintSolver {
  allowed_clause_lengths
  number_of_literals
  number_of_clauses
}

class SafetyLivenessPredicateGenerator {
	p, p(f), p(f, f), p(V, V)
	..
}

class Predicategenerator {
	p, p(f), p(V, f)
	..
}

@enduml
