Struct PBEProblem

Source
pub struct PBEProblem {
    pub logic: String,
    pub synthfuns: Vec<SynthFun>,
    pub problem_index: usize,
    pub examples: IOExamples,
}
Expand description

A struct representing a synthesis problem to be solved. This structure contains four fields: logic, a string specifying the logic or domain in which the synthesis problem is defined; synthfuns, a vector of SynthFun instances representing the functions to be synthesized as part of solving the problem; problem_index, a usize value denoting the particular index or identifier of this problem within a broader set of problems; and examples, an IOExamples instance that holds input-output exemplars relevant to the synthesis task, to ground the problem solution in practical demonstrations of expected behavior.

Fields§

§logic: String§synthfuns: Vec<SynthFun>§problem_index: usize§examples: IOExamples

Implementations§

Source§

impl PBEProblem

Source

pub fn synthfun(&self) -> &SynthFun

Provides access to a specific SynthFun based on the current problem_index.

This function retrieves a reference to the SynthFun within the synthfuns vector of the PBEProblem instance. The problem_index specifies which SynthFun to access, allowing direct retrieval of the active synthesis function’s details, such as its signature and configuration, from the list of available functions.

Source

pub fn parse(input: &str) -> Result<PBEProblem, Error>

Parses a string input to create an instance of PBEProblem.

This method uses the ProblemParser to initially parse the input string according to predefined grammar rules, extracting relevant components for logic, synthesis functions, examples, and checks. It specifically targets obtaining the logic definition, synthesizing problem configurations, and IO examples used in problem-solving. The method processes these components to extract the inner details of logic and synthesis, where synthesis functions are parsed individually. A verification step ensures that only one main synthesis function (synth-fun) is designated as the primary problem by filtering out those marked as subproblems. The synthesis examples are parsed to ensure they match the signature of the main synthesis function. It constructs and returns a PBEProblem comprising the logic, a vector of synthesis functions, the index of the main problem, and the parsed examples. The method will fail if the input does not conform to expected structures or logic, returning an error.

Trait Implementations§

Source§

impl Debug for PBEProblem

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> AllocForAny<T> for T

Source§

fn galloc(self) -> &'static T

Provides a method to allocate an instance of T on the heap with a static lifetime.

This implementation of galloc takes ownership of the T instance and uses the alloc function to place it in a location with a static lifetime, presumably managing it in a way that ensures its persistence for the duration of the program. This can be particularly useful for scenarios where a static lifetime is required, such as when interfacing with systems or patterns that necessitate global state or long-lived data.

Source§

fn galloc_mut(self) -> &'static T

Provides a method that moves the instance and returns a reference to it allocated with a static lifetime.

This method utilizes alloc_mut to perform the allocation, likely involving allocating the resource in a manner that ensures it lives for the entire duration of the application. These semantics allow the user to safely assume that the reference will not expire during the program’s execution, making it suitable for long-lived data structures or operations that require such guarantees.

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V