content: package at.ac.tuwien.kr.alpha.api;
  
  import at.ac.tuwien.kr.alpha.api.programs.ASPCore2Program;
  import at.ac.tuwien.kr.alpha.api.programs.NormalProgram;
  import at.ac.tuwien.kr.alpha.api.programs.analysis.ComponentGraph;
  import at.ac.tuwien.kr.alpha.api.programs.analysis.DependencyGraph;
  
  /**
   * Wrapper object for debug information on program preprocessing produced by {@link Alpha}.
   * 
   * Copyright (c) 2021, the Alpha Team.
   */
  public interface DebugSolvingContext {
  
  	/**
  	 * The normalized version of the {@link ASPCore2Program} that is being solved.
  	 * See {@link Alpha#normalizeProgram(ASPCore2Program)}.
  	 */
  	NormalProgram getNormalizedProgram();
  
  	/**
  	 * The fully preprocessed version of the {@link ASPCore2Program} that is being solved.
  	 * This differs from the value of {@link DebugSolvingContext#getNormalizedProgram()} in the stratified part of the normalized program may
  	 * already be evaluated depending on the respective configuration of {@link Alpha}.
  	 */
  	NormalProgram getPreprocessedProgram();
  
  	/**
  	 * The {@link DependencyGraph} of the program being solved.
  	 */
  	DependencyGraph getDependencyGraph();
  
  	/**
  	 * The {@link ComponentGraph} of the program being solved.
  	 */
  	ComponentGraph getComponentGraph();
  
  	/**
  	 * A {@link Solver} instance pre-loaded with the program being solved, from which {@link AnswerSet}s can be streamed.
  	 */
  	Solver getSolver();
  
  }
  